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);
}
}