精华内容
下载资源
问答
  • AES加密解密算法

    2018-07-15 10:55:55
    实现的AES加密解密算法,高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥
  • 加密解密算法

    千次阅读 2018-09-14 09:56:46
    MD5 的特性 MD5 是一种加密算法,在...MD5 算法,无法被逆向解密; 但是,基于 md5 算法的第二个特性,我们可以进行碰撞暴力破解;(MD5 存在被暴力破解的安全性问题) 为了解决 简单的明文密码,被 md5 加密后,...

    MD5 的特性

    1. MD5 是一种加密算法,在调用这个算法的时候,提供一个密码的明文, 调用的结果,得到一个 32 位长度的密文;
    2. MD5 算法的特性:相同的字符串,如果多次调用 md5 算法,得到的结果,完全一样;
    3. MD5 算法,无法被逆向解密
    4. 但是,基于 md5 算法的第二个特性,我们可以进行碰撞暴力破解;(MD5 存在被暴力破解的安全性问题)
    5. 为了解决 简单的明文密码,被 md5 加密后,通过 暴力破解的安全性问题, 然后就出现了加盐的MD5加密;
    6. 目前,md5的暴力破解,又升级了,升级到了 彩虹表
    7. 由于彩虹表出现,我们推荐大家,在存储网站密码的时候,使用 bcrypt 加密算法,得到加密之后的密文进行存储;

    bcrypt 加密算法

    1. 在调用加密算法的时候,需要手动提供一个 幂次;
    2. 调用加密算法,得到的加密结果格式:$版本号$循环的幂次$22位的随机盐 31位的密文
      • 加密的随机盐加密的幂次,和加密算法的版本号已经被存储到了真正的密文中;

    项目中使用 bcrypt 的步骤

    1. 运行 npm i node-pre-gyp -g

    2. 在项目根目录中,打开终端,运行 cnpm install bcrypt -S

    3. 导入 bcrypt

      // 导入加密的模块
      const bcrypt = require('bcrypt')
    4. 定义幂次:

      // 定义一个 幂次
      const saltRounds = 10    // 2^10
    5. 调用 bcrypt.hash() 加密:

      // 加密的方法
      bcrypt.hash('需要加密的密码', saltRounds, (err, pwdCryped) => {
        console.log(pwdCryped)
      })
    6. 调用bcrypt.compare()对比密码是否正确:

      // 对比 密码的方法
      bcrypt.compare('123', '$2b$10$i1ufUKnC9fXTsF9oqqvLMeDnpNfYIvhyqKRG03adiebNFPkjW3HPW', function(err, res) {
       console.log(res)
       // 内部对比的过程:
       // 1. 先获取 输入的明文
       // 2. 获取输入的密文
       // 2.1 从密文中,解析出来  bcrypt 算法的 版本号
       // 2.2 从密文中,解析出来 幂次
       // 2.3 从密文中,解析出来前 22 位 这个随机盐
       // 3. compare 方法内部,调用 类似于 hash 方法 把 明文,幂次,随机盐 都传递进去     最终得到正向加密后的密文
       // 4. 根据最新得到的密文,和 compare 提供的密文进行对比,如果相等,则 返回 true ,否则返回 false;
      })

    展开全文
  • 主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了java RAS加密解密算法的相关实现技巧,需要的朋友可以参考下
  • 主要介绍了php的RSA加密解密算法原理与用法,结合实例形式分析了rsa加密解密算法的相关概念、原理及PHP使用RSA加密解密算法的具体实现技巧,需要的朋友可以参考下
  • RSA加密解密算法.ppt

    2020-09-02 08:02:48
    RSA 加密解密算法 1.RSA 算法的基本概念 2.RSA 加密算法实现 3.RSA 解密算法实现 4. 遇到的问题 5. 总结 RSA 加密解密算法基本概念 RSA 公钥加密算法是 1977 年由 Ron Rivest Adi Shamirh 和 LenA dleman 开发的 RSA...
  • C# 加密解密算法

    2013-08-23 14:11:42
    C# 加密解密算法
  • 用delphi写的加密解密算法,闲暇之余写的,用delphi写的加密解密算法,闲暇之余写的,用delphi写的加密解密算法,闲暇之余写的,用delphi写的加密解密算法,闲暇之余写的,
  • JAVA 加密 解密 算法

    2008-11-14 17:42:55
    JAVA加密解密算法 JAVA加密解密算法
  • 用C语言实现的AES加密解密算法

    千次下载 热门讨论 2013-08-26 10:36:17
    用C语言实现的AES加密解密算法,用C语言实现的AES加密解密算法
  • 各位大侠在做数据传输时,有没有考虑过把数据加密起来进行传输,若在串口或者无线...常用的加密解密算法比如DES、RSA等,受限于单片机的内存和运算速度,实现起来比较困难,但一种叫TEA的加密算法特别适合单片机使用。
  • DES加密解密算法VB源码

    热门讨论 2011-02-03 00:36:35
    DES加密解密算法VB源码 DES 加密解密 算法 VB 源码
  • 300多种加密解密算法(C++)源代码 300多种加密解密算法(C++)源代码
  • 300种加密解密算法

    2010-04-10 23:05:45
    300种加密解密算法,300种加密解密算法
  • 字符串加密解密算法

    2012-06-01 13:45:29
    字符串加密解密算法
  • 主要介绍了JS实现的3des+base64加密解密算法,结合完整实例形式分析了JavaScript实现的3des+base64加密解密算法简单使用技巧,需要的朋友可以参考下
  • c# 可逆 加密 解密算法
  • C++实现密码学 RSA加密解密算法

    热门讨论 2011-05-26 20:51:25
    RSA加密解密算法 C++ 密码学 RSA加密解密算法 C++ 密码学 RSA加密解密算法 C++ 密码学
  • C# JAVA nodejs通用的AES加密解密算法,考虑到实际使用过程中由于客户端和服务端使用的语言不一样而又需要对数据进行加密和解密的情况,特此总结了C# JAVA nodejs通用的AES加密解密算法,供需要者参考。
  • java加密解密算法大全

    热门讨论 2012-11-29 13:52:42
    用java代码写的流行的加密解密算法的实现
  • c++和c#同时实现DES加密解密算法 c++和c#同时实现DES加密解密算法 c++和c#同时实现DES加密解密算法
  • RC6加密解密算法

    2012-06-21 19:25:14
    有兴趣的朋友可以下载,这里有RC6加密解密算法
  • MD5加密解密算法描述.docMD5加密解密算法描述.docMD5加密解密算法描述.doc
  • js中对字符串加密解密算法
  • java加密解密算法(AES)

    2014-06-26 10:58:57
    java加密解密算法的集合,AES DES。
  • 在学习操作系统的时候,我们会学到系统安全的章节,而在这一块会有关于加密解密算法的学习。 一共有5种常见的加密解密算法:凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法。 我使用了js实现了这5种算法...

    在学习操作系统的时候,我们会学到系统安全的章节,而在这一块会有关于加密解密算法的学习。

    一共有5种常见的加密解密算法:凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法。 

    我使用了js实现了这5种算法,而且做了可视化处理、输入输出格式化处理,使得操作起来非常方便,下面是实现后整体的效果:

    1.这里是源代码下载地址(Github): 

    基于js的5种加密解密算法实现

     

    2.五种加密解密算法的基本原理

    ①单字母替换加密方法——恺撒密码

           加密方法是把英文字母按字母表的顺序编号作为明文,将密钥定为m,加密算法为将明文加上密钥m,得到密码表,通过相反的过程由密文得到明文。

    ②单字母替换加密方法——字母倒排序

           在加密、解密的过程中明文和密文按照字母表的顺序倒排对应,即A对应Z,B对应Y。  

    单字母替换加密方法——单表置换密码      

           由密钥Key构造字符置换表,完成加密和解密过程。

    ④多字母替换加密方法——维吉利亚密码

           假设明文m=m1 m2 m3 … mn;密钥k=k1k2 k3 … kn,对应密文c=c1 c2 c3 … cn,密文为:ci=(mi+ki )mod 26 ,26个字母的序号依次为0~25,ci , mi ,,ki是分别是密文明文密钥中第i个字母的序号。

    转换加密方法

           通过将明文每m个字符一组按顺序分为若干个字符串,再按照先列后行形成密文,并分析给出解密的方法。或者通过给出一个密钥字符串,将明文按密钥字符串长度按顺序分为若干组字符串,再按照密钥字符串各个字符的顺序形成密文,并分析给出解密的方法。

     

    3.基础功能设计

    ①清空功能:

      ②加密解密单选设计:

       ③菜单设置:

       ④消息提醒设置:

     

    4.测试过程 

    (一)凯撒密码

    ①加密实验

    输入数据:

    InputABCDEFGH

    Num4

    输出数据:

    OutputEFGHIJKL

     

    ②解密实验

    输入数据:


    InputEFGHIJKL

    Num4

    输出数据:


    OutputABCDEFGH

     

    (二)字母倒排序

    ①加密实验

    输入数据:


    Inputimportant

    输出数据:


    Outputrnkligzmg

     

    ②解密实验

    输入数据:


    Inputrnkligzmg

    输出数据:


    Outputimportant

     

    (三)单表置换

    ①加密实验

    输入数据:

    Inputimportant

    keyBEIJINGTSINGHUA(北京清华)

    输出数据:


    Output:HDLKOQBFQ

     

    ②解密实验

    输入数据:

    InputHDLKOQBFQ

    keyBEIJINGTSINGHUA(北京清华)

    输出数据:


    Output:important

     

    (四)维基利亚

    ①加密实验

    输入数据:

    Inputinformation

    keySTAR


    输出数据:

    OutputAGFFJFAKAHN

     

    ②解密实验

    输入数据:

    InputAGFFJFAKAHN

    keySTAR

    输出数据:

    Outputinformation

     

    (五)转换加密(1

    ①加密实验

    输入数据:

    Inputit can allow students to get close up views


    Num5

    输出数据:


    Outputiasngovtlttesiclusteeaodtcuwnweolps

     


    ②解密实验

    输入数据:

    Inputiasngovtlttesiclusteeaodtcuwnweolps

    Num5


    输出数据:

    Outputitcanallowstudentstogetcloseupviews

     

    (六)转换加密(2

    ①加密实验

    输入数据:


    Inputwu han university of technology

    KeyMISXTONG


    输出数据:

    OutputIOL*UETGWVFONYO*UTN*HREYNIH*ASC*

     

    ②解密实验

    输入数据:

    InputIOL*UETGWVFONYO*UTN*HREYNIH*ASC*


    输出数据:


    Outputwuhanuniversityoftechnology

     

    5.注意事项

       (一).本项目为了增加可操作性、增加视图画面感、进行输入输出验证,使用了Vue.js中数据绑定的功能以及Element UI插件

       (二).主体代码都在code_index.html中,代码总量600余行。进行了详细地标注

       (三).在转化加密的实现过程中会有一个不可避免的BUG,那就是当以相应的栅栏间隔对字符串进行分割形成相应二维数组的时候,由于其先行后列进行排序,再先列后行进行排序,所以如果二维数组尾部出现空字符,则在这个变化的过程中会无故丢失数据的结构,导致排序的错乱。

           我想到了两种解决方法:

          ①通过限时用户的输入格式,使得最终形成的二维数组不会有空字符存在,这样也就避免了相应的数据丢失,如下图所示:

     

          ②通过在先行后列和先列后行的排序中对于空字符进行识别,替换成一个特殊字符,以弥补数据结构的缺失,本实验中采用的是“*”这一特殊字符,如下图所示:

      (四)最后再次附上源码下载地址:基于js的5种加密解密算法实现 

     

    欢迎我的微信公众号【前端栈无不胜】

    会定期推送Js、Vue、React、Node、算法、面试等大前端技术博客、精选文章!

    展开全文
  • 案例1: 换位加密解密算法 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class demo { static char[] jiami(char[] str, int n) /...

    案例1: 换位加密解密算法

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.*;
    
    public class demo {
        static char[] jiami(char[] str, int n)                    //加密算法
        {
            int i, j, k, d;
            int len;
            char[] temp, miwen, mtemp = {};
    
            len = str.length;                        //字符串长度
            if ((d = len % n) != 0) {
                len = len + n - d;
            }
    
            if ((temp = new char[len + 1]) == null)    //申请内存
            {
                System.out.print("申请内存失败!\n");
                System.exit(1);
            }
    
            if ((miwen = new char[len + 1]) == null)    //申请内存
            {
                System.out.print("申请内存失败!\n");
                System.exit(1);
            } else {
                mtemp = miwen;
            }
    
            System.arraycopy(str, 0, temp, 0, str.length);
            for (i = str.length; i < len; i++) {
                temp[i] = 32;
            }
            temp[len] = '\0';
            i = 0;
            for (k = 0; k < n; k++)                    //转换,加密
            {
                for (j = 0; j < len / n; j++) {
                    mtemp[i] = temp[k + j * n];
                    i++;
                }
            }
            mtemp[i] = '\0';
            temp = null;
    
            return miwen;                        //返回密文
        }
    
        static char[] jiemi(char[] str, int n)                    //解密算法
        {
            int i, j, k = 0, d;
            int len;
            char[] temp, mingwen, mtemp = {};
    
            len = str.length;
    
            if ((d = len % n) != 0) {
                len = len - d;
            }
            n = len / n;
            if ((temp = new char[len + 1]) == null)    //申请内存
            {
                System.out.print("申请内存失败!\n");
                System.exit(1);
            }
    
            if ((mingwen = new char[len + 1]) == null)    //申请内存
            {
                System.out.print("申请内存失败!\n");
                System.exit(1);
            } else {
                mtemp = mingwen;
            }
    
            System.arraycopy(str, 0, temp, 0, str.length);
            for (i = str.length; i < len; i++) {
                temp[i] = 32;
            }
            temp[len] = '\0';
            i = 0;
            for (k = 0; k < n; k++)                    //恢复出明文
            {
                for (j = 0; j < len / n; j++) {
                    mtemp[i] = temp[k + j * n];
                    i++;
                }
            }
    
            while (mtemp[--i] == 32) ;
            i++;
            mtemp[i] = '\0';
            return mingwen;                        //返回明文
        }
    
    
        public static void main(String[] args) throws IOException {
            int n, i;
            char[] srcstr = new char[100];
            char[] miwen;
            String go;
    
            System.out.print("换位加密解密算法演示!\n");
    
            do {
                System.out.print("\n请先输入换位加密矩阵每行的字符数:");
                Scanner input = new Scanner(System.in);
                n = input.nextInt();                        //输入换位加密矩阵每行的字符数
    
                System.out.println("请输入明文:");
                //输入明文字符串
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
                String str = bufferedReader.readLine();
                srcstr = str.toCharArray();
    
                System.out.print("输入的明文为:");
                for (i = 0; i < srcstr.length; i++) {
                    System.out.print(srcstr[i]);
                }
    
                miwen = jiami(srcstr, n);                //加密
                System.out.print("\n加密后的密文为:");
                for (i = 0; i < srcstr.length; i++) {
                    System.out.print(miwen[i]);
                }
                miwen = jiemi(miwen, n);                //解密
                System.out.print("\n解密出的明文为:");
                for (i = 0; i < srcstr.length; i++) {
                    System.out.print(miwen[i]);
                }
    
                System.out.print("\n继续执行(y/n)?");
                go = input.next();
            } while (go.equalsIgnoreCase("y"));
            System.out.println("演示结束!");
        }
    }
    
    

    案例2: 替换加密解密算法

    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    
    
    public class demo {
        static char[] jiami(char[] str, int n)     //加密算法
        {
            int i, len;
            char[] miwen;
    
            len = str.length;
            if ((miwen = new char[len + 1]) == null)    //申请内存
            {
                System.out.print("申请内存失败!\n");
                System.exit(1);
            }
            for (i = 0; i < len; i++)                        //移位替换
            {
                miwen[i] = (char) (str[i] + n);
            }
            miwen[len] = '\0';
            return miwen;
        }
    
        static char[] jiemi(char[] str, int n)        //解密算法
        {
            int i, len;
            char[] mingwen;
    
            len = str.length;
            if ((mingwen = new char[len + 1]) == null)//申请内存
            {
                System.out.print("申请内存失败!\n");
                System.exit(1);
            }
            for (i = 0; i < len; i++)                        //移位替换
            {
                mingwen[i] = (char) (str[i] - n);
            }
            mingwen[len] = '\0';
            return mingwen;
        }
    
        public static void main(String[] args) throws IOException {
            int i, n;
            char[] srcstr = new char[100];
            char[] miwen;
            String go;
    
            System.out.print("替换加密解密算法演示!\n");
    
            do {
                System.out.print("\n请先输入替换加密解密算法中的密钥:");
                Scanner input = new Scanner(System.in);
                n = input.nextInt();                        //密钥
                System.out.print("请输入明文字符串:");
    
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
                String str = bufferedReader.readLine();
                srcstr = str.toCharArray();                //明文字符串
    
                System.out.print("输入的明文为:");
                for (i = 0; i < srcstr.length; i++) {
                    System.out.print(srcstr[i]);
                }
    
                miwen = jiami(srcstr, n);                //加密
                System.out.print("\n加密后的密文为:");
                for (i = 0; i < srcstr.length; i++) {
                    System.out.print(miwen[i]);
                }
                miwen = jiemi(miwen, n);                //解密
                System.out.print("\n解密出的明文为:");
                for (i = 0; i < srcstr.length; i++) {
                    System.out.print(miwen[i]);
                }
    
                System.out.print("\n继续执行(y/n)?");
                go = input.next();
            } while (go.equalsIgnoreCase("y"));
            System.out.println("演示结束!");
        }
    
    }
    

    执行结果如下:
    在这里插入图片描述

    案例3:位加密解密算法

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    
    
    public class demo {
        static char[] bitcode(char[] str, char n)                //位加密解密算法
        {
            int i, len;
            char[] wen;
    
            len = str.length;
            if ((wen = new char[len + 1]) == null) {
                System.out.print("申请内存失败!\n");
                System.exit(1);
            }
            for (i = 0; i < len; i++) {
                wen[i] = (char) (str[i] ^ n);                    //异或运算
            }
            wen[len] = '\0';
            return wen;
        }
    
        public static void main(String[] args) throws IOException {
            int i;
            char ch;
            char[] srcstr = new char[100];
            char[] miwen;
            String go;
    
            System.out.print("位加密解密算法演示!\n");
    
            do {
                System.out.print("\n请先输入替换加密解密算法中的密钥:");
                Scanner input = new Scanner(System.in);
                ch = input.next().charAt(0);                        //密钥
                System.out.print("请输入明文字符串:");
    
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
                String str = bufferedReader.readLine();
                srcstr = str.toCharArray();                //明文字符串
    
                System.out.print("输入的明文为:");
                for (i = 0; i < srcstr.length; i++) {
                    System.out.print(srcstr[i]);
                }
    
                miwen = bitcode(srcstr, ch);                //加密
                System.out.print("\n加密后的密文为:");
                for (i = 0; i < srcstr.length; i++) {
                    System.out.print(miwen[i]);
                }
                miwen = bitcode(miwen, ch);                //解密
                System.out.print("\n解密出的明文为:");
                for (i = 0; i < srcstr.length; i++) {
                    System.out.print(miwen[i]);
                }
    
                System.out.print("\n继续执行(y/n)?");
                go = input.next();
            } while (go.equalsIgnoreCase("y"));
            System.out.println("演示结束!");
    
        }
    
    }
    
    
    

    执行结果如下:
    在这里插入图片描述

    案例4: 一次一密加密算法

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Random;
    import java.util.Scanner;
    
    
    public class demo {
        static int MAX = 100;
        static char[] key = new char[MAX];                            //用于保存密钥
        static int len;
    
        static char[] bitcode(char[] str)                    //一次一密加密算法
        {
            int i;
            char[] wen;
    
            if ((wen = new char[len + 1]) == null) {
                System.out.printf("申请内存失败!\n");
                System.exit(1);
            }
            for (i = 0; i < len; i++) {
                wen[i] = (char) (str[i] ^ key[i]);                //异或运算
            }
            wen[len] = '\0';
            return wen;
        }
    
        public static void main(String[] args) throws IOException {
            int i;
            char[] srcstr = new char[MAX];
            char[] miwen, mingwen;
            String go;
            Scanner input = new Scanner(System.in);
    //		srand(time(NULL));					//随机种子
            System.out.printf("一次一密加密解密算法演示!\n");
    
            do {
                System.out.printf("请输入明文字符串:");
    
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
                String str = bufferedReader.readLine();
    
                srcstr = str.toCharArray();
                //明文信息
                Random r = new Random();                    //随机种子
                len = srcstr.length;
                for (i = 0; i < len; i++) {
                    key[i] = (char) (r.nextInt(10) + '0');            //产生密钥序列
                }
                System.out.printf("此次加密解密演示的密钥序列为:");
                for (i = 0; i < len; i++) {
                    System.out.printf("%c", key[i]);
                }
    //		System.out.printf("\n");
                miwen = bitcode(srcstr);                //加密
                System.out.printf("\n输入的明文为:");
                for (i = 0; i < srcstr.length; i++)
                    System.out.print(srcstr[i]);
                System.out.printf("\n加密后的密文为:");
                for (i = 0; i < miwen.length; i++)
                    System.out.print(miwen[i]);
                mingwen = bitcode(miwen);                //解密
                System.out.printf("\n解密出的明文为:");
                for (i = 0; i < mingwen.length; i++)
                    System.out.print(mingwen[i]);
    
                System.out.print("\n\n继续执行(y/n)?");
    
                go = input.next();
            } while (go.equalsIgnoreCase("y"));
            System.out.println("演示结束!");
    
    
        }
    
    }
    
    

    执行结果如下:
    在这里插入图片描述

    展开全文
  • 【加密】DES加密解密算法

    千次阅读 热门讨论 2017-04-15 16:06:12
    近几天,小编在项目中遇到了加密解密的这些技术,以前也接触过MD5加密解密算法。我说用MD5做得了,同组开发的崔哥说MD5不可逆,研究一下其他的加密解密的算法。然后就在网上找了DES的算法。 二、什么是DES? DES...

    一、前言

          近几天,小编在项目中遇到了加密解密的这些技术,以前也接触过MD5加密解密算法。我说用MD5做得了,同组开发的崔哥说MD5不可逆,研究一下其他的加密解密的算法。然后就在网上找了DES的算法。

    二、什么是DES?

          DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。需要注意的是,在某些文献中,作为算法的DES称为数据加密算法(Data Encryption Algorithm,DEA),已与作为标准的DES区分开来。

    三、封装的DES算法类

          关于DES算法,他有一个核心的算法key,不同的key值可以得到不同的结果。所以小编把这个key值分析了一下,提取出来可以由用户自行设置。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Security.Cryptography;
    using System.IO;
    
    namespace DESDecder
    {
        /// <summary>  
        /// DES加密解密算法  
        /// </summary>  
        public  class DES
        {
            /// <summary>  
            /// DES加密算法  
            /// sKey为8位或16位  
            /// </summary>  
            /// <param name="pToEncrypt">需要加密的字符串</param>  
            /// <param name="sKey">密钥</param>  
            /// <returns></returns>  
            public string DesEncrypt(string pToEncrypt, string sKey)
            {
                StringBuilder ret = new StringBuilder();
    
                try
                {
                    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                    byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
                    des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                    des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
                    MemoryStream ms = new MemoryStream();
                    CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
                    cs.Write(inputByteArray, 0, inputByteArray.Length);
                    cs.FlushFinalBlock();
    
                    foreach (byte b in ms.ToArray())
                    {
                        ret.AppendFormat("{0:X2}", b);
                    }
                    ret.ToString();
                }
                catch
                {
    
                }
                return ret.ToString();
                //return a;  
            }
            /// <summary>  
            /// DES解密算法  
            /// sKey为8位或16位  
            /// </summary>  
            /// <param name="pToDecrypt">需要解密的字符串</param>  
            /// <param name="sKey">密钥</param>  
            /// <returns></returns>  
            public string DesDecrypt(string pToDecrypt, string sKey)
            {
                MemoryStream ms = new MemoryStream();
    
                try
                {
                    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                    byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
                    for (int x = 0; x < pToDecrypt.Length / 2; x++)
                    {
                        int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
                        inputByteArray[x] = (byte)i;
                    }
                    des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                    des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
    
                    CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
                    cs.Write(inputByteArray, 0, inputByteArray.Length);
                    cs.FlushFinalBlock();
                    StringBuilder ret = new StringBuilder();
    
                }
                catch
                {
    
                }
    
                return System.Text.Encoding.Default.GetString(ms.ToArray());
            }
    
    
            #region 加密解密
    
            public static DES dd = new DES();
    
            public static string StringKey = "A123456."; // 加密密钥  
    
            /// <summary>  
            /// 解密  
            /// </summary>  
            /// <param name="str"></param>  
            /// <returns></returns>  
            public static string StringDecder(string str)
            {
                return dd.DesDecrypt(str, StringKey);
            }
    
            /// <summary>  
            /// 加密  
            /// </summary>  
            /// <param name="str"></param>  
            /// <returns></returns>  
            public static string StringEncoder(string str)
            {
                return dd.DesEncrypt(str, StringKey);
            }
    
            #endregion   
        }  
    }
    

    四、小结

          通过学习这个算法,算是对这个有了一定的了解了。在以后的算法学习过程中,只要有现成的例子就可以更加深入的学习,可以对比学习了。

    展开全文
  • 国密SM9算法C++实现之六:加密解密算法 国密SM9算法C++实现之六:加密解密算法 加密算法流程 加密结果值 Cipher.h 加密算法实现 解密算法流程 解密算法实现 加密算法...
  • Python各类加密解密算法代码集,比如这些解密算法中就包括了base64、摩斯密码表(自己可定义加密方式...)、将摩斯密码还原成字符串、RE加密等,后续还会分享更多的Python加密算法,敬请期待。
  • 凯撒密码加密解密算法 C++的语言~欢迎大家下载哈~共享~

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 137,858
精华内容 55,143
关键字:

加密解密算法