java和Dart实现异或加密算法

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);
    }
}
原文地址:https://www.cnblogs.com/zhang-cb/p/13964000.html