Dart语言实现异或加密算法
class XORCryptoUtil{ static const String keyStr='709489b228199d46fa01f9dc59a9e9b5'; int k = keyStr.length; /// 异或加密 static String _coding(String message){ int len = message.length; String str=''; for(int i=0;i<len;i++){ int msgCode= message.codeUnitAt(i); int keyCode = keyStr.codeUnitAt(i % keyStr.length ); var res = msgCode ^ keyCode; str+=String.fromCharCode(res); } return str; } /// 加密 static String encoding(String plaintext){ return _coding(plaintext); } /// 解密 static String decoding(String cipherText){ return _coding(cipherText); } } void main(){ String name = "123"; String key = "709489b228199d46fa01f9dc59a9e9b5"; String dres = XORCryptoUtil.decoding(name); String eres = XORCryptoUtil.encoding(dres); print('加密后:${Uri.encodeComponent(dres)}'); print('解密后:$eres'); }
Java语言实现异或加密算法
public class XORCryptoUtil { private byte[] keyBytes; // 密钥 private int k; public XORCryptoUtil(String key) { keyBytes = key.getBytes(); k = keyBytes.length; } private String coding(String message) { byte[] origin = message.getBytes(); byte[] master = new byte[origin.length]; for (int i = 0, len = origin.length; i < len; i++) { master[i] = (byte) (origin[i] ^ keyBytes[i % k]); } return new String(master); } public String encoding(String plaintext) { return coding(plaintext); } public String decoding(String cipherText) { return coding(cipherText); } public static void main(String[] args) throws UnsupportedEncodingException { String name = "123"; String key = "709489b228199d46fa01f9dc59a9e9b5"; XORCryptoUtil crypto = new XORCryptoUtil(key); String cipherText = crypto.encoding(name); // 将name加密成密文 String plaintext = crypto.decoding(cipherText); // 解密 System.out.println("加密:"+ URLEncoder.encode(cipherText,"UTF-8"));//url 转译 System.out.println("解密:"+plaintext); } }