秘钥的生成:可以利用机器码生成秘钥。例如: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);
}