常见加密算法学习

1、对称加密

加密和解密使用同一把密钥,主要算法有DES、AES等

对称加密常用的数学运算:

移位和循环移位:移位就是按照一定规则整体性左移或右移(凯撒密码),循环右移就是将最后一位移到最前头,循环左移刚好相反
置换:将数码中的某一位根据置换表的规定,用另一位替代(ip置换)
扩展:拓展出更长的数码
压缩:与扩展相反
迭代:多次重复相同的运算,使得密文更难以被破解
异或:一个数,两次异或后会得到原数本身
以下代码以异或为例:

	//str为需要加密的字符串,encryptCode为秘钥
    public static String xor(String str, int encryptCode) {
   
        char[] chs = str.toCharArray();
        for (int i = 0; i < chs.length; i++) {
   
            chs[i] = (char) (chs[i] ^ encryptCode);
        }
        return new String(chs);
    }
DES算法:

分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用同一个算法,秘钥长度为56位,8为作为校验码,不参与运算。
加密:

	  //1.提供明文
      String text = "abc";
      //2.提供原始秘钥:长度64位
      String key = "12345678";
      //3、获取加密算法工具类
      Cipher des = Cipher.getInstance("DES");
      //4、初始化
      des.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key.getBytes(), "DES"));
      //5、加密
      byte[] bytes = des.doFinal(text.getBytes());
      System.out.println(new String(bytes));

解密:

	//解密
       des.init(Cipher.DECRYPT_MODE,new SecretKeySpec(key.getBytes(),"DES"));
       byte[] bytes1 = des.doFinal(bytes);
       System.out.println(new String(bytes1));
AES算法:

AES旨在取代DES成为广泛使用的标准,AES使用的分组大小为128位,密钥长度可以为128、192、256bit,最简单常用的是128bit的秘钥。其加密过程涉及到四种操作:字节替代、行移位、列混淆和轮秘钥加。
加密:

		//1.提供明文
       String text 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值