秘钥的生成:可以利用机器码生成秘钥。例如:IOS端在注册用户名密码的时候,同时将iPad的机器码保存在对应账户里(数据库里),这样当往指定iPad端传输数据的时候,就用保存在数据库中的此iPad机器码生成秘钥,而在iPad的程序里则直接调用此iPad机器码生成秘钥进行解密。
加密算法
/* * @param encryptString 待加密的字符串 * @param encryptKey 生成秘钥的字符串,例如:机器码 * @return 加密后的字符串 */ public String encrypt(String encryptString,String encryptKey) throws Exception { SecretKeySpec key = new SecretKeySpec(encryptKey.getBytes(),"DES"); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE,key);//Cipher.ENCRYPT_MODE(加密标识) byte[] encryptedData = cipher.doFinal(encryptString.getBytes("UTF-8"));DES//加密 return Base64.encode(encryptedData);//Base64加密生成在Http协议中传输的字符串 }
解密算法
/* * @param decryptString 待解密的字符串 * @param decryptKey 生成秘钥的字符串,例如:机器码 * @return 解密后的字符串 */ public String decrypt(String decryptString, String decryptKey) throws Exception { byte[] byteMi = Base64.decode(decryptString); SecretKeySpec key = new SecretKeySpec(decryptKey.getBytes(),"DES"); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE,key); byte[] decryptData = cipher.doFinal(byteMi); return new String(decryptData); }