加密算法—MD5、RSA、DES
最近因为要做一个加密的功能,简单了解了一下加密算法,现在比较常用的有三个加密算法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.
加密程序
- Dim des As New System.Security.Cryptography.DESCryptoServiceProvider 'DES算法
 - Dim inputByteArray As Byte()
 - inputByteArray = System.Text.Encoding.Default.GetBytes(SourceStr)
 - des.Key = System.Text.Encoding.UTF8.GetBytes(myKey) 'myKey DES用8个字符,TripleDES要24个字符
 - des.IV = System.Text.Encoding.UTF8.GetBytes(myIV) 'myIV DES用8个字符,TripleDES要24个字符
 - Dim ms As New System.IO.MemoryStream
 - Dim cs As New System.Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(), System.Security.Cryp tography.CryptoStreamMode.Write)
 - Dim sw As New System.IO.StreamWriter(cs)
 - sw.Write(SourceStr)
 - sw.Flush()
 - cs.FlushFinalBlock()
 - ms.Flush()
 - EncryptDes = Convert.ToBase64String(ms.GetBuffer(), 0, ms.Length)
 
调用
- EDes = EncryptDes(DataData(j, k).Value, "12345678", "abcdefgh")
 
解密
- <span style="font-size:18px;"><strong> Dim des As New System.Security.Cryptography.DESCryptoServiceProvider 'DES算法
 - des.Key = System.Text.Encoding.UTF8.GetBytes(myKey) 'myKey DES用8个字符,TripleDES要24个字符
 - des.IV = System.Text.Encoding.UTF8.GetBytes(myIV) 'myIV DES用8个字符,TripleDES要24个字符
 - Dim buffer As Byte() = Convert.FromBase64String(SourceStr)
 - Dim ms As New System.IO.MemoryStream(buffer)
 - Dim cs As New System.Security.Cryptography.CryptoStream(ms, des.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Read)
 - Dim sr As New System.IO.StreamReader(cs)
 - DecryptDes = sr.ReadToEnd()</strong></span>
 
调用
- <span style="font-size:18px;"><strong> UserEntity.userId = DecryptDes(mydataset.Tables(0).Rows(Count).Item(0), "12345678", "abcdefgh")
 - UserEntity.userName = DecryptDes(mydataset.Tables(0).Rows(Count).Item(1), "12345678", "abcdefgh")
 - UserEntity.passWord = DecryptDes(mydataset.Tables(0).Rows(Count).Item(2), "12345678", "abcdefgh")
 - UserEntity.realyName = DecryptDes(mydataset.Tables(0).Rows(Count).Item(3), "12345678", "abcdefgh")
 - UserEntity.phoneNumber = DecryptDes(mydataset.Tables(0).Rows(Count).Item(4), "12345678", "abcdefgh")
 - UserEntity.unitName = DecryptDes(mydataset.Tables(0).Rows(Count).Item(5), "12345678", "abcdefgh")
 - UserEntity.unitType = DecryptDes(mydataset.Tables(0).Rows(Count).Item(6), "12345678", "abcdefgh")
 - UserEntity.isDelete = DecryptDes(mydataset.Tables(0).Rows(Count).Item(7), "12345678", "abcdefgh")</strong></span>
 
    这里,我们只是对这三个算法的简单了解,这三个算法涉及的内容是非常多的,有不对的地方请大牛们多多斧正。
加密算法—MD5、RSA、DES的更多相关文章
- 【编程开发】加密算法(MD5,RSA,DES)的解析
		
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来. MD5将 ...
 - 3个著名加密算法(MD5、RSA、DES)的解析
		
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来. M ...
 - [转]3个著名加密算法(MD5、RSA、DES)的解析
		
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来. ...
 - Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA
		
版权声明:本文为博主原创文章,未经博主允许不得转载. [前言] 本文简单的介绍了加密技术相关概念,最后总结了java中现有的加密技术以及使用方法和例子 [最简单的加密] 1.简单的概念 明文:加密前的 ...
 - Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC
		
Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha 加密解密,曾经是我一 ...
 - BASE64与单向加密算法MD5&SHA&MAC
		
言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书. 如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Diges ...
 - 温故知新,.Net Core遇见Digital Signature(MD5/RSA/SM),微服务签名机制设计
		
什么是数字签名(Digital Signature) 数字签名(Digital Signature)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性 ...
 - 【Java】聊聊常用的非对称加密算法之一RSA的使用(Java)
		
参考的优秀文章 Java加密技术(四)——非对称加密算法RSA RSA算法原理(一).RSA算法原理(二) RSA的公钥和私钥到底哪个才是用来加密和哪个用来解密? 简单的介绍 RSA是有名的非对称加密 ...
 - 常用加密算法的Java实现(一)  ——单向加密算法MD5和SHA
		
1.Java的安全体系架构 1.1 Java的安全体系架构介绍 Java中为安全框架提供类和接口.JDK 安全 API 是 Java 编程语言的核心 API,位于 java.sec ...
 
随机推荐
- INNO 补丁制作技术, 打开 INNO 补丁制作方法的第一页
			
INNO 补丁制作技术, 打开 INNO 补丁制作方法的第一页 作者:xin 日期:2005-09-23 字体大小: 小 中 大 VPatch 在 INNO 中的应用. VPatch 属于专为NS ...
 - threadid=1: thread exiting with uncaught.exception ......解决方法
			
threadid=1: thread exiting with uncaught exception (group=0x40015560)E/AndroidRuntime(285): FATAL E ...
 - [家里蹲大学数学杂志]第047期18 世纪法国数学界的3L
			
1 Lagrange---78岁 约瑟夫·拉格朗日, 全名约瑟夫·路易斯·拉格朗日 (Joseph-Louis Lagrange 1735~1813) 法国数学家.物理学家. 1736年1月25日生于 ...
 - Chap5: question: 29 - 31
			
29. 数组中出现次数超过一半的数字. 方法a. 排序取中 O(nlogn). 方法b. partition 函数分割找中位数 >=O(n). 方法c. 设计数变量,扫描一遍 ...
 - 修复山寨版的J-Link
			
Fixed J-Link 1. Erase (1) Power On (2) Jump "ERASE"(JP3) (3) Wait for 5s (4) Break ...
 - TCP/IP 之大明王朝邮差
			
本系列文章全部摘选自"码农翻身"公众号,仅供个人学习和分享之用.文章会给出原文的链接地址,希望不会涉及到版权问题. 个人感言:真正的知识是深入浅出的,码农翻身" 公共号将 ...
 - 【EF学习笔记09】----------使用 EntityState 枚举标记实体状态,实现增删改查
			
讲解之前,先来看一下我们的数据库结构:班级表 学生表 如上图,实体状态由EntityState枚举定义:Detached(未跟踪).Unchanged(未改变).Added(已添加).Deleted( ...
 - Failed to load the JNI shared library jvm.dll
			
jdk和使用的ide版本不符合,换一个版本的jdk或者换版本的ide
 - struts2下s:iterator取不出值
			
1:问题起因:通过action方法连接数据库取出Arraylist集合,在前台页面遍历显示无数据,用s:debug查看 stack里有值,用了各种方法,包括session传值,但是仍然取不出来. 2: ...
 - easyui datagrid 跨页选择
			
$.fn.extend( memberList ,{ quickSearch : function() { var time1 = new Date(); /* this.datagrid.datag ...