zoukankan      html  css  js  c++  java
  • 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);
        }
    }

  • 相关阅读:
    NoSQL学习之路[索引贴]
    MongoDB学习 (五):查询操作符(Query Operators).1st
    ASP.NET 设计模式 ( 组织业务逻辑层) 读书摘记4
    好慌好慌 举个栗子^
    读 VIM:七个高效编辑的习惯
    The Oauth2.0 Authorization Framework翻译part1
    关于twemproxy和redis分布式
    The Oauth2.0 Authorization Framework翻译part2
    Coin Slider jQuery插件使用方法
    Oracle数据库的三种标准的备份方法
  • 原文地址:https://www.cnblogs.com/zhang-cb/p/13964026.html
Copyright © 2011-2022 走看看