最近因为要做一个加密的功能,简单了解了一下加密算法,现在比较常用的有三个加密算法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.

    加密程序

  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)

    调用

  1. EDes = EncryptDes(DataData(j, k).Value, "12345678", "abcdefgh")

    解密

  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>

 

    调用

  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>

 

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

加密算法—MD5、RSA、DES的更多相关文章

  1. 【编程开发】加密算法(MD5,RSA,DES)的解析

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

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

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

  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

    版权声明:本文为博主原创文章,未经博主允许不得转载. [前言] 本文简单的介绍了加密技术相关概念,最后总结了java中现有的加密技术以及使用方法和例子 [最简单的加密] 1.简单的概念 明文:加密前的 ...

  5. Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC

    Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha     加密解密,曾经是我一 ...

  6. BASE64与单向加密算法MD5&SHA&MAC

    言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书.     如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Diges ...

  7. 温故知新,.Net Core遇见Digital Signature(MD5/RSA/SM),微服务签名机制设计

    什么是数字签名(Digital Signature) 数字签名(Digital Signature)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性 ...

  8. 【Java】聊聊常用的非对称加密算法之一RSA的使用(Java)

    参考的优秀文章 Java加密技术(四)——非对称加密算法RSA RSA算法原理(一).RSA算法原理(二) RSA的公钥和私钥到底哪个才是用来加密和哪个用来解密? 简单的介绍 RSA是有名的非对称加密 ...

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

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

随机推荐

  1. Windows性能查看器:系统的性能信息(I/O,IIS最大连接数,Sql) ,以及解决 asp.net IIS 一二百多用户并发

    在测试过程中,我们经常需要知道“系统的资源利用情况”来监测我们的测试执行情况,来查看测试环境是否有效,测试结果是否可信,或者是在无人值守时保存结果,等我们值班时再来分析. 1.在Windows环境下, ...

  2. Linux下删除空文件,删除指定大小的文件

    Linux下批量删除空文件(大小等于0的文件)的方法: find . -name "*" -type f -size 0c | xargs -n 1 rm -f 用这个还可以删除指 ...

  3. ConfigParser.MissingSectionHeaderError: File contains no section headers.

    今天使用ConfigParser解析一个ini文件,报出如下错误: config.read(logFile) File "C:\Python26\lib\ConfigParser.py&qu ...

  4. 实习日记:图像检索算法 LSH 的总结与分析(matlab)

    最开始仿真和精度测试,基于 matlab 完成的. Demo_MakeTable.m (生成 Hash 表) %======================================== %** ...

  5. Good Bye 2013 A

    A. New Year Candles time limit per test 1 second memory limit per test 256 megabytes input standard ...

  6. Karma:1. 集成 Karma 和 Jasmine 进行单元测试

    关于 Karma 会是一个系列,讨论在各种环境下,使用 Karma 进行单元测试. 本文讨论 karma 集成 Jasmine 进行单元测试. 初始化 NPM 实现初始化 NPM 包管理,创建 pac ...

  7. 并发:OPP 响应超并发:OPP 响应超时

    用户提交报表,无法正常结束,报表日志中有如下消息: “正在执行请求完成选项... +------------- 1) PUBLISH -------------+ 节点 FIN1 上的请求 29884 ...

  8. python 版本问题大全

    坑一 一下午的时间又让这个不是问题的问题给白白给浪费了,此片文章仅仅纪念一下浪费掉的宝贵时间 新式类与经典类问题 class qwe: def __init__(self, name): self.n ...

  9. django若干问题

    1.使用post方式 在views.py里要出发post请求的函数前加入@csrf_exempt ,之前要引入from django.views.decorators.csrf import csrf ...

  10. 开发《基于Arcgis Online的家政管理服务信息系统》随笔1

    1.在webservice中写的方法参数里面含有数组,如:public DataTable AdvSearch1(int ServiceArea, params string[] nas), 在发布之 ...