• 团队冲刺DAY3


    DESUtil.java是包含加密解密抽象类的Java文件
    DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。在2001年高级加密标准提出前,实际加密标准(DES)一直是使用广泛的加密协议。
    为实现DES的加密解密算法
    需要解决如下问题
    DES算法分三个步
    1.骤给定64bit的明文M,通过一个固定的初始的置换IP来得到M0。
    2.进行16轮迭代置换用算,这些运算称为轮函数F。
    3.对比特串使用逆置换P-1得到密文。

    16轮完全相同的迭代运算
    函数f的输出经过一个异或运算,和左半部分结合形成新的右半部分,原来的右半部分成为新的左半部分。

    上一轮的输出为下一轮的输入

    第十六轮输出后左右两边互相交换

    即:输出的左半部分等于输出的右半部分

    输出的右半部分等于输出的左半部分

    对轮函数f的说明

    数f由四步运算构成:秘钥置换(Kn的生成,n=0~16);扩展置换;S-盒代替;P-盒置换.

    密钥置换选择1---PC-1(子秘钥的生成)
    1.64位秘钥降至56位秘钥不是说将每个字节的第八位删除,而是通过缩小选择换位表1(置换选择表1)的变换变成56位。
    再将56位秘钥分成C0和D0:
    C0(28位)=K57K49K41...K44K36   D0(28位)=K63K55K47...K12K4
    根据轮数,将Cn和Dn分别循环左移1位或2位

    以此类推,得到子秘钥K1~K16。需要注意其中循环左移的位数。

    byte[] src = srcStr.getBytes(charset);
    
    byte[] buf = Des.encrypt(src, sKey);
    
    

    两类抽象类分别作用于读取信息和des加密
    其中strcpy是一种C语言的标准库函数,strcpy把含有''结束符的字符串复制到另一个地址空间,返回值的类型为char*
    DESncrypt为不携带秘钥秘钥固定携带秘钥
    解密与加密一样

    DEStest.java

    Destest是用来测试Des加密算法的程序。
    通过将待加密内容加解密来进行测试
    代码:

    
    import java.nio.charset.Charset;
    
    public class Destest {
        private static final String  SKEY    = "abcdefgh";
        private static final Charset CHARSET = Charset.forName("gb2312");
    
        public static void main(String[] args) {
            // 待加密内容
            String str = "nihao";
            String encryptResult = DesUtil.encrypt(str, CHARSET, SKEY);
            System.out.println(encryptResult);
            // 直接将如上内容解密
            String decryResult = "";
            try {
                decryResult = DesUtil.decrypt(encryptResult, CHARSET, SKEY);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
            System.out.println(decryResult);
        }
    }
    

    至此DES加密的大体框架就完成了。

  • 相关阅读:
    c++ 单例模式
    c++ 时间格式化
    c++ read
    c++ 时间与字符串转换
    c++ switch case
    HIVE Transform using 用法
    python安装模块
    pip install psutil出错-You are using pip version 10.0.1, however version 18.0 is available.
    centos下安装Loadrunner
    svn-checkout后,循环遍历查找包含某字符串的文件
  • 原文地址:https://www.cnblogs.com/gjy2019/p/10964671.html
Copyright © 2020-2023  润新知