最近因为要做一个加密的功能,简单了解了一下加密算法,现在比较常用的有三个加密算法MD5加密算法、RSA加密算法、DES加密算法。

 

    MD5加密算法

    定义:MD5算法是将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,即使你看到源程序和算法描述,也无法将MD5的值变回原始的字符串。

    应用:在有些操作系统中,用户的密码是以MD5的方式保存的,用户登录时,系统吧用户输入的密码计算成MD5中,然后和数据库中保存的MD5值进行比较,如果相同则登录成功,如果不同则登录失败,而系统并不知道用户的密码是什么。

 

    RSA加密算法

    定义:RSA既能用于数据加密,也能用于数字签名。

    原理:1、找出三个数p、q、r    p、q是相异的中质数, r 是与 (p-1)(q-1) 互质的数,p, q, r 这三个数便是 private key

                2、找出 m, 使得 rm = 1 mod (p-1)(q-1)计算 n = pq  m, n 这两个数便是 public key 

           3、a是要加密的资料, b = a^m mod n, (0 <= b < n),b是加密后的资料

           4、 解密过程 a = b^r mod pq (0 <= c < pq)

    局限性:由于进行的都是大数计算,速度一直是RSA的缺陷。一般来说只用于少量数据加密。 

 

    DES加密算法

    有点:DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础(动态的生成key)

   原理:DES算法有三个参数:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。 如Mode为加密,则用Key 去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。

    应用:我们最后使用的就是DES加密算法,但是由于用户对数据的保密性并没有高度的要求,所以我们没有使用动态的key,而是使用了静态的key.

    加密程序

[html] view plaincopy
  1. Dim des As New System.Security.Cryptography.DESCryptoServiceProvider 'DES算法
  2. Dim inputByteArray As Byte()
  3. inputByteArray = System.Text.Encoding.Default.GetBytes(SourceStr)
  4. des.Key = System.Text.Encoding.UTF8.GetBytes(myKey) 'myKey DES用8个字符,TripleDES要24个字符
  5. des.IV = System.Text.Encoding.UTF8.GetBytes(myIV) 'myIV DES用8个字符,TripleDES要24个字符
  6. Dim ms As New System.IO.MemoryStream
  7. Dim cs As New System.Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(), System.Security.Cryp            tography.CryptoStreamMode.Write)
  8. Dim sw As New System.IO.StreamWriter(cs)
  9. sw.Write(SourceStr)
  10. sw.Flush()
  11. cs.FlushFinalBlock()
  12. ms.Flush()
  13. EncryptDes = Convert.ToBase64String(ms.GetBuffer(), 0, ms.Length)

    调用

[html] view plaincopy
  1. EDes = EncryptDes(DataData(j, k).Value, "12345678", "abcdefgh")

    解密

[html] view plaincopy
  1. <span style="font-size:18px;"><strong>        Dim des As New System.Security.Cryptography.DESCryptoServiceProvider 'DES算法
  2. des.Key = System.Text.Encoding.UTF8.GetBytes(myKey) 'myKey DES用8个字符,TripleDES要24个字符
  3. des.IV = System.Text.Encoding.UTF8.GetBytes(myIV) 'myIV DES用8个字符,TripleDES要24个字符
  4. Dim buffer As Byte() = Convert.FromBase64String(SourceStr)
  5. Dim ms As New System.IO.MemoryStream(buffer)
  6. Dim cs As New System.Security.Cryptography.CryptoStream(ms, des.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Read)
  7. Dim sr As New System.IO.StreamReader(cs)
  8. DecryptDes = sr.ReadToEnd()</strong></span>

 

    调用

[html] view plaincopy
  1. <span style="font-size:18px;"><strong>        UserEntity.userId = DecryptDes(mydataset.Tables(0).Rows(Count).Item(0), "12345678", "abcdefgh")
  2. UserEntity.userName = DecryptDes(mydataset.Tables(0).Rows(Count).Item(1), "12345678", "abcdefgh")
  3. UserEntity.passWord = DecryptDes(mydataset.Tables(0).Rows(Count).Item(2), "12345678", "abcdefgh")
  4. UserEntity.realyName = DecryptDes(mydataset.Tables(0).Rows(Count).Item(3), "12345678", "abcdefgh")
  5. UserEntity.phoneNumber = DecryptDes(mydataset.Tables(0).Rows(Count).Item(4), "12345678", "abcdefgh")
  6. UserEntity.unitName = DecryptDes(mydataset.Tables(0).Rows(Count).Item(5), "12345678", "abcdefgh")
  7. UserEntity.unitType = DecryptDes(mydataset.Tables(0).Rows(Count).Item(6), "12345678", "abcdefgh")
  8. UserEntity.isDelete = DecryptDes(mydataset.Tables(0).Rows(Count).Item(7), "12345678", "abcdefgh")</strong></span>

 

    这里,我们只是对这三个算法的简单了解,这三个算法涉及的内容是非常多的,有不对的地方请大牛们多多斧正。

转载于:https://www.cnblogs.com/miercler/p/5471692.html

加密算法—MD5、RSA、DES相关推荐

  1. Android MD5 RSA DES等几种加密算法

    参考:http://www.2cto.com/kf/201207/138943.html http://www.iplaysoft.com/encrypt-arithmetic.html http:/ ...

  2. MD5 RSA DES

    MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来.     ...

  3. 3个著名加密算法(MD5、RSA、DES)的解析

    MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来.     ...

  4. Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA

    [最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao,正确应该是miyue,但是大家都读miyao) 2.简单的例子 ...

  5. JAVA加密解密→术语、密码分类、OSI与TCP/IP安全体系、Base64、消息摘要算法MD/SHA/MAC、对称加密算法DES/AES/PBE、非对称加密算法DH/RSA/EIGamaI

    术语 密码分类 OSI与TCP/IP安全体系 JAVA安全 Base64算法 消息摘要算法MD 消息摘要算法MD图解 消息摘要算法SHA 消息摘要算法SHA图解 消息摘要算法MAC 消息摘要算法MAC ...

  6. ASP.NET加密算法(MD5/DES)

    本文讲 ASP.NET的MD5和DES加密和解密算法 #region MD5算法         public string md5(string str, int code)         {   ...

  7. 常用加密算法的Java实现(一) ——单向加密算法MD5和SHA

    1.Java的安全体系架构 1.1           Java的安全体系架构介绍 Java中为安全框架提供类和接口.JDK 安全 API 是 Java 编程语言的核心 API,位于 java.sec ...

  8. C#毕业设计——基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码)——数字签名系统

    基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于MD5+RSA的数字签名设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告PPT模板及论 ...

  9. 加密算法-MD5算法

    在一些初始化处理后,MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组.算法的输出由四个32位分组组成,将它们级联形成一个128位散列值. 首先填充消息使其长度恰好为一个比512位 ...

最新文章

  1. html5地理定位数据
  2. Win10系列:JavaScript综合实例2
  3. 高德机器人的名字是怎么呼叫的_“一键呼叫”上门办服务!龙岗这个“智慧社区”很贴心~...
  4. Python3 replace()实现字符串替换
  5. 另存为常用位置设置 1.0 绿色版
  6. (案例)使用Cookie保存用户最后一次访问的时间
  7. 积分图像(Integral image)
  8. linux 监控java内存_Linux下实用的JAVA内存泄露监控命令及工具
  9. 不添加外键能关联查询_SpringDataJPA关联关系
  10. C#3.0入门系列(八)-之GroupBy操作
  11. ios懒人笔记应用源码
  12. 为磁盘更换好看的ico图标
  13. 魔法才能打败魔法?银行现身说法
  14. ubuntu录制屏幕及视频处理
  15. 从多种模型中选择最合适的模型,用于行人检测
  16. XML解析之DOM、SAX、JAXP、DOM4J
  17. 《计算机程序的构造和解释》阅读笔记:准备(3)【python3简单实现lisp解释器(3)】
  18. ORers‘ Bling Chat | 【高光聊天记录集锦-03】:运小筹读者群里那些热烈的讨论
  19. Photoshopcs6 自学笔记三 画笔工具
  20. 程序员带你一步步分析AI如何玩Flappy Bird

热门文章

  1. php 数字加逗号,php数字满三位添加一逗号
  2. python2.7输入函数_Python2.7的用户输入函数有问题,无法让这些输入与程序一起工作...
  3. 达梦数据库查询数据库所有表名_达梦数据库的一些实用小SQL
  4. pe安装usb3.0驱动_电脑店U盘启动盘制作工具下载安装须知
  5. Ubuntu下安装OpenSSH Server并在客户端远程连接Ubuntu
  6. 力扣35. 搜索插入位置
  7. Win32ASM-进程学习【1】
  8. python:将时间戳转换成格式化日期
  9. java 方法 示例_Java集合syncedList()方法与示例
  10. goroutine并发扫描MySQL表_goroutine 并发之搜索文件内容