导航:首页 > 文档加密 > 密码加密csdn

密码加密csdn

发布时间:2023-07-03 16:07:07

1. 前端使用crypto-js 3DES 加解密

crypto-js git地址

参考文察悄章:crypto-js 3DES 加解密( http://www.appblog.cn/2019/06/30/%E5%89%8D%E7%AB%AF%20crypto-js%203DES%20%E5%8A%A0%E8%A7%A3%E5%AF%86/ )

参考文章:crypto-js 加密 和 解密( https://blog.csdn.net/u013299635/article/details/102696911?utm_medium=distribute.pc_relevant.none-task-blog--3.e_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog--3.e_weight
)

需棚没扰链旦求描述:登录密码使用3des加密传给后端,引入crypto-js方式为html引入

2. 如何使用java对密码加密 加密方式aes

Java有相关的实现类:具体原理如下
对于任意长度的明文,AES首先对其进行分组,每组的长度为128位。分组之后将分别对每个128位的明文分组进行加密。
对于每个128位长度的明文分组的加密过程如下:
(1)将128位AES明文分组放入状态矩阵中。
(2)AddRoundKey变换:对状态矩阵进行AddRoundKey变换,与膨胀后的密钥进行异或操作(密钥膨胀将在实验原理七中详细讨论)。
(3)10轮循环:AES对状态矩阵进行了10轮类似的子加密过程。前9轮子加密过程中,每一轮子加密过程包括4种不同的变换,而最后一轮只有3种变换,前9轮的子加密步骤如下:
● SubBytes变换:SubBytes变换是一个对状态矩阵非线性的变换;
● ShiftRows变换:ShiftRows变换对状态矩阵的行进行循环移位;
● MixColumns变换:MixColumns变换对状态矩阵的列进行变换;
● AddRoundKey变换:AddRoundKey变换对状态矩阵和膨胀后的密钥进行异或操作。
最后一轮的子加密步骤如下:
● SubBytes变换:SubBytes变换是一个对状态矩阵非线性的变换;
● ShiftRows变换:ShiftRows变换对状态矩阵的行进行循环移位;
● AddRoundKey变换:AddRoundKey变换对状态矩阵和膨胀后的密钥进行异或操作;
(4)经过10轮循环的状态矩阵中的内容就是加密后的密文。
AES的加密算法的伪代码如下。

在AES算法中,AddRoundKey变换需要使用膨胀后的密钥,原始的128位密钥经过膨胀会产生44个字(每个字为32位)的膨胀后的密钥,这44个字的膨胀后的密钥供11次AddRoundKey变换使用,一次AddRoundKey使用4个字(128位)的膨胀后的密钥。
三.AES的分组过程
对于任意长度的明文,AES首先对其进行分组,分组的方法与DES相同,即对长度不足的明文分组后面补充0即可,只是每一组的长度为128位。
AES的密钥长度有128比特,192比特和256比特三种标准,其他长度的密钥并没有列入到AES联邦标准中,在下面的介绍中,我们将以128位密钥为例。
四.状态矩阵
状态矩阵是一个4行、4列的字节矩阵,所谓字节矩阵就是指矩阵中的每个元素都是一个1字节长度的数据。我们将状态矩阵记为State,State中的元素记为Sij,表示状态矩阵中第i行第j列的元素。128比特的明文分组按字节分成16块,第一块记为“块0”,第二块记为“块1”,依此类推,最后一块记为“块15”,然后将这16块明文数据放入到状态矩阵中,将这16块明文数据放入到状态矩阵中的方法如图2-2-1所示。

块0

块4

块8

块12

块1

块5

块9

块13

块2

块6

块10

块14

块3

块7

块11

块15

图2-2-1 将明文块放入状态矩阵中
五.AddRoundKey变换
状态矩阵生成以后,首先要进行AddRoundKey变换,AddRoundKey变换将状态矩阵与膨胀后的密钥进行按位异或运算,如下所示。

其中,c表示列数,数组W为膨胀后的密钥,round为加密轮数,Nb为状态矩阵的列数。
它的过程如图2-2-2所示。

图2-2-2 AES算法AddRoundKey变换
六.10轮循环
经过AddRoundKey的状态矩阵要继续进行10轮类似的子加密过程。前9轮子加密过程中,每一轮要经过4种不同的变换,即SubBytes变换、ShiftRows变换、MixColumns变换和AddRoundKey变换,而最后一轮只有3种变换,即SubBytes变换、ShiftRows变换和AddRoundKey变换。AddRoundKey变换已经讨论过,下面分别讨论余下的三种变换。
1.SubBytes变换
SubBytes是一个独立作用于状态字节的非线性变换,它由以下两个步骤组成:
(1)在GF(28)域,求乘法的逆运算,即对于α∈GF(28)求β∈GF(28),使αβ =βα = 1mod(x8 + x4 + x3 + x + 1)。
(2)在GF(28)域做变换,变换使用矩阵乘法,如下所示:

由于所有的运算都在GF(28)域上进行,所以最后的结果都在GF(28)上。若g∈GF(28)是GF(28)的本原元素,则对于α∈GF(28),α≠0,则存在
β ∈ GF(28),使得:
β = gαmod(x8 + x4 + x3 + x + 1)
由于g255 = 1mod(x8 + x4 + x3 + x + 1)
所以g255-α = β-1mod(x8 + x4 + x3 + x + 1)
根据SubBytes变换算法,可以得出SubBytes的置换表,如表2-2-1所示,这个表也叫做AES的S盒。该表的使用方法如下:状态矩阵中每个元素都要经过该表替换,每个元素为8比特,前4比特决定了行号,后4比特决定了列号,例如求SubBytes(0C)查表的0行C列得FE。
表2-2-1 AES的SubBytes置换表

它的变换过程如图2-2-3所示。

图2-2-3 SubBytes变换
AES加密过程需要用到一些数学基础,其中包括GF(2)域上的多项式、GF(28)域上的多项式的计算和矩阵乘法运算等,有兴趣的同学请参考相关的数学书籍。
2.ShiftRows变换
ShiftRows变换比较简单,状态矩阵的第1行不发生改变,第2行循环左移1字节,第3行循环左移2字节,第4行循环左移3字节。ShiftRows变换的过程如图2-2-4所示。

图2-2-4 AES的ShiftRows变换
3.MixColumns变换
在MixColumns变换中,状态矩阵的列看作是域GF(28)的多项式,模(x4+1)乘以c(x)的结果:
c(x)=(03)x3+(01)x2+(01)x+(02)
这里(03)为十六进制表示,依此类推。c(x)与x4+1互质,故存在逆:
d(x)=(0B)x3+(0D)x2+(0G)x+(0E)使c(x)•d(x) = (D1)mod(x4+1)。
设有:

它的过程如图2-2-5所示。

图2-2-5 AES算法MixColumns变换
七.密钥膨胀
在AES算法中,AddRoundKey变换需要使用膨胀后的密钥,膨胀后的密钥记为子密钥,原始的128位密钥经过膨胀会产生44个字(每个字为32位)的子密钥,这44个字的子密钥供11次AddRoundKey变换使用,一次AddRoundKey使用4个字(128位)的膨胀后的密钥。
密钥膨胀算法是以字为基础的(一个字由4个字节组成,即32比特)。128比特的原始密钥经过膨胀后将产生44个字的子密钥,我们将这44个密钥保存在一个字数组中,记为W[44]。128比特的原始密钥分成16份,存放在一个字节的数组:Key[0],Key[1]……Key[15]中。
在密钥膨胀算法中,Rcon是一个10个字的数组,在数组中保存着算法定义的常数,分别为:
Rcon[0] = 0x01000000
Rcon[1] = 0x02000000
Rcon[2] = 0x04000000
Rcon[3] = 0x08000000
Rcon[4] = 0x10000000
Rcon[5] = 0x20000000
Rcon[6] = 0x40000000
Rcon[7] = 0x80000000
Rcon[8] = 0x1b000000
Rcon[9] = 0x36000000
另外,在密钥膨胀中包括其他两个操作RotWord和SubWord,下面对这两个操作做说明:
RotWord( B0,B1,B2,B3 )对4个字节B0,B1,B2,B3进行循环移位,即
RotWord( B0,B1,B2,B3 ) = ( B1,B2,B3,B0 )
SubWord( B0,B1,B2,B3 )对4个字节B0,B1,B2,B3使用AES的S盒,即
SubWord( B0,B1,B2,B3 ) = ( B’0,B’1,B’2,B’3 )
其中,B’i = SubBytes(Bi),i = 0,1,2,3。
密钥膨胀的算法如下:

八.解密过程
AES的加密和解密过程并不相同,首先密文按128位分组,分组方法和加密时的分组方法相同,然后进行轮变换。
AES的解密过程可以看成是加密过程的逆过程,它也由10轮循环组成,每一轮循环包括四个变换分别为InvShiftRows变换、InvSubBytes变换、InvMixColumns变换和AddRoundKey变换;
这个过程可以描述为如下代码片段所示:

九.InvShiftRows变换
InvShiftRows变换是ShiftRows变换的逆过程,十分简单,指定InvShiftRows的变换如下。
Sr,(c+shift(r,Nb))modNb= Sr,c for 0 < r< 4 and 0 ≤ c < Nb
图2-2-6演示了这个过程。

图2-2-6 AES算法InvShiftRows变换
十.InvSubBytes变换
InvSubBytes变换是SubBytes变换的逆变换,利用AES的S盒的逆作字节置换,表2-2-2为InvSubBytes变换的置换表。
表2-2-2 InvSubBytes置换表

十一.InvMixColumns变换
InvMixColumns变换与MixColumns变换类似,每列乘以d(x)
d(x) = (OB)x3 + (0D)x2 + (0G)x + (0E)
下列等式成立:
( (03)x3 + (01)x2 + (01)x + (02) )⊙d(x) = (01)
上面的内容可以描述为以下的矩阵乘法:

十二.AddRoundKey变换
AES解密过程的AddRoundKey变换与加密过程中的AddRoundKey变换一样,都是按位与子密钥做异或操作。解密过程的密钥膨胀算法也与加密的密钥膨胀算法相同。最后状态矩阵中的数据就是明文。

3. 移动端与后端数据传输加密

对称加密:对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高
非对称加密:非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。
方案:将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。
方案的流程介绍:
1、APP客户端需要和服务器进行数据交互,它的APP首先生成了一个随机数作为对称密钥(比如AES加密的密钥)。
2、APP客户端向服务器请求公钥
3、服务器将公钥发送给APP客户端
4、APP客户端使用服务器的公钥将自己的对称密钥(比如AES加密的密钥)加密
5、APP客户端将加密后的对称密钥发送给服务器
6、服务器使用私钥解密得到APP客户端的对称密钥
7、APP客户端与服务器可以使用对称密钥来对沟通的内容进行加密与解密了
App端和后台数据加密分两部分:
1.数据传输的时候加密 (一般采用Https协议在传输层加密)
2.数据本身的加密 (使用各种加密算法)
RSA非对称加密:公钥加密,私钥解密。公钥私钥由服务端生成,公钥放在客户端私密保存,私钥放在服务端。安全性高,运算速度慢
AES对成加密:运算速度快切安全性高
上面网络通信过程是安全的,可以保证通信数据即使被截取了,也无法获得任何有效信息;即使被篡改了,也无法被客户端和服务端验证通过。
具体可参考的博文:(记得后续实践哦)
https://blog.csdn.net/wangjiang_qianmo/article/details/88073848?utm_medium=distribute.pc_relevant.none-task-blog--1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog--1.channel_param

4. Paillier同态加密算法

Paillier加密是一种公钥加密算法,基于复合剩余类的困难问题。其满足于加法同态,即密文相乘等于明文相加,即:

密钥生成

快速生成私钥

在密钥相同的情况下,可以快速生成密钥:

, 为欧拉函数,即

加密

解密

加法同态

Paillier加密的两个密文消息相乘的结果解密后得到两个消息相加的结果。

对于两个密文 和

其中 和 都是 中的元素,因此 也属于 , 并具有相同的性质,所以 可以看作是 加密的密文, 的解密结果为 。

总结

常见的同态加密算法中,Paillier算法和Benaloh算法仅满足加法同态,RSA算法和ElGamal算法只满足乘法同态,而Gentry算法则是全同态的。

https://en.wikipedia.org/wiki/Paillier_cryptosystem

https://blog.csdn.net/sinianluoye/article/details/82855059

http://www.cs.tau.ac.il/~fiat/crypt07/papers/Pai99pai.pdf

5. auth返回状态码异常

throw new AuthException("ssCode","登录错了");
返回:
{
"error" : "ssCode",
"error_description" : "登录错了"
}
文章知识点与官方知识档案匹配
Java技能树首页概览
86213 人正在系统学习中
打开CSDN,阅读体验更佳
springsecurity+oauth2+jwt实现单点吵备册登录demo
该资源是springsecurity+oauth2+jwt实现的单点登录demo,模式为授权码模式,实现自定义登录页面和自定义授权页面。应用数据存在内存中或者存在数据库中(附带数据库表结构),token存储分为数据库或者Redis。demo包含服务端和客户端,可直接运行测试。
Spring Security OAuth2 认证服务器自定义异常处理
认证服务器默认返回的数据格式如下: { "error": "unsupported_grant_type", "error_description": "Unsupported grant type: password1" } 上面的返回结果很不友好,而且前端代码也很难判断是什么错误,所以我们需要对返回的错误进行统一的异常处理 1.默认的异常处理器 默认情况是使用WebRespo...
继续访问
自定义spring security oauth /auth/token的返回内容格式
场景 在前后端分离的项目中,一般后端返回给前端的格式是一个固定的json格式。 在这个前提下,spring security oauth 生成access token的请求/auth/token的返回内容就需要自定义 原返回值 我们希望使用我们自己固定的json格式 需求 我们的BaseResponse类 public class BaseResponse { pri...
继续访问
Spring Security OAuth2模块/oauth/token授权接口自定义返回结果
spring security提供了默认的oauth登录授权升宏接口/oauth/token,该接口位于org.springframework.security.oauth2.provider.endpoint包中的TokenEndpoint类。 公司要实现自定义的登录授权接口,且返回值滚型也要实现私有结构,下面大概讲一下怎么改造这个类来实现要求的业务逻辑。 一、利用Spring AOP方式 二、自定义Controller接口实现 简单粗暴,直接把TokenEndpointer类注入到自定义Controller中;
继续访问
Spring Security Oauth2 自定义异常返回信息
开头引用 https://my.oschina.net/merryyou/blog/1819572 在使用Spring Security Oauth2登录和鉴权失败时,默认返回的异常信息如下 { "error": "unauthorized", "error_description": "Full authentication is required to access this r...
继续访问
oauth2.0源码分析之oauth/token申请令牌
本期介绍的是在oauth2.0中 , 通过调用oauth/token接口 , 框架是如何给我们申请到JWT令牌的 , 内部做了些什么事情 ? 在分析源码之前 , 我们首先需要知道的是我们需要具备哪些调试条件 , 不然会发现许多奇奇怪怪的错误 (比如通过/oauth/token时出现401) 1.一张oauth2.0的内置表(oauth_client_details) 注意:这里的密码需要用Bcript加密 , 因为源码内部是用Bcript解密的 2.两把钥匙: 一本是后缀为jks的私钥 另一本是后缀为k
继续访问
SpringSecurity+OAuth2认证/oauth/token登录报错There is no client authentication
报错信息: { "error": "unauthorized", "error_description": "There is no client authentication. Try adding an appropriate authentication filter." } 找到这个问题原因后,发现自己被自己蠢哭了。 在自己的核心配置类里,把这个/oauth/token加入到忽...
继续访问
spring security+Oauth2密码模式认证时,报401,Unauthorized的问题排查
第一种情况: 进行 /auth/token的post请求时,没有进行httpbasic认证。 什么是http Basic认证? http协议的一种认证方式,将客户端id和客户端密码按照“客户端ID:客户端密码”的格式拼接,并用base64编码,放在 header中请求服务端。例子如下: Authorization:Basic ASDLKFALDSFAJSLDFKLASD= ASDLKFALDSFAJSLDFKLASD= 就是 客户端ID:客户端密码 的64编码 springsecurity中的...
继续访问
最新发布 SpringBoot使用SpringSecurity,使用oauth2登录,使用自定义/uaa/oauth/token报错解决
SpringBoot使用SpringSecurity,使用oauth2登录,使用自定义/uaa/oauth/token报错解决
继续访问
asp.net WebAPI OWIN OAuth2.0授权自定义返回结果及错误或异常问题处理办法
asp.net WebAPI OWIN OAuth2.0授权自定义返回结果及错误或异常问题处理核心代码,详情: https://www.cnblogs.com/wgx0428/p/12315546.html
ASP.NET WebAPI Token JWT Bearer 认证失败和成功返回自定义数据 Json
asp.net WebAPI Token Oauth2.0授权自定义返回结果(包括登录正确返回,登录失败返回)。 详细参考:https://blog.csdn.net/u013546115/article/details/105580532
Spring Security OAuth2 token权限隔离实例解析
主要介绍了Spring Security OAuth2 token权限隔离实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
spring security oauth其中的/oauth/token做了哪些
项目场景: 问题描述: 提示:这里描述项目中遇到的问题: 例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据 APP 中接收数据代码: 原因分析: 提示:这里填写问题的分析: 例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()和 Handler.sendMessage(),其中 obtainMessage 方式当数据量过大时,由于 MessageQuene 大小也有限,所以当 message 处理不及时时,会造成先传的数据被覆盖,进而.
继续访问
Spring Security OAuth2 自定义 token Exception
https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/spring-security-OAuth208.png 1. 前言 在使用Spring Security Oauth2登录和鉴权失败时,默认返回的异常信息如下 { "error": "unauthorized", "error_description": "Full authentication is required to
继续访问
前后端分离 token过期 返回状态码
1.首先配置Mvc配置文件类 @Configuration public class BackendConfiguration extends WebMvcConfigurationSupport { @Autowired private LoginInterceptor loginInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { regi
继续访问
SpringSecurityOAuth2(2)请求携带客户端信息校验,自定义异常返回,无权处理,token失效处理...
上文地址:SpringSecurityOAuth2(1)(password,authorization_code,refresh_token,client_credentials)获取token 上一篇博客写了一个至简的OAuth2的token认证服务器,只实现了4种获取token的方式 ,对...
继续访问
oauth2.0自定义token失效返回信息
oauth2.0自定义token失效返回信息 一、问题 由于spring security oauth2返回的失效信息对于客户端不太有好,在网上找了自定义的解决方案以便更优雅的展示返回信息。 重写框架里的方法,实现自定义。 二、配置类 Oauth2ResourceServer extends @Override public void configure( reso
继续访问
热门推荐 解决Spring Security OAuth在访问/oauth/token时候报401 authentication is required
先来张图片 我在用psotman 测试oauth授权码模式的出现了401的异常, 就是调用oauth/token. 我是想用code换token,但是发现报错了。这是为什么呢? 首先你要理解 /oauth/token 这个如果配置支持的,且url中有client_...
继续访问
spring security 和OAuth2 整合访问 localhost:8082/oauth/token 报401的问题,或者403的问题
@Bean public PasswordEncoder passwordEncoder() { /** * 采坑 * spring-boot2 之后废弃了MD5,使用BCryptPasswordEncoder()加密; * */ return new BCryptPasswordEncoder(); } 注意在security的配置内中,要使用BCryptPasswordEncoder 加密,..
继续访问
数据库课程设计
c语言文件读写操作代码
html+css+js网页设计

6. 如何安全保存密码

过去一段时间来,众多的网站遭遇用户密码数据库泄露事件,这甚至包括顶级的互联网企业–NASDQ上市的商务社交网络Linkedin,国内诸如CSDN一类的就更多了。
层出不穷的类似事件对用户会造成巨大的影响,因为人们往往习惯在不同网站使用相同的密码,一家“暴库”,全部遭殃。
那么在选择密码存储方案时,容易掉入哪些陷阱,以及如何避免这些陷阱?我们将在实践中的一些心得体会记录于此,与大家分享。

菜鸟方案:
直接存储用户密码的明文或者将密码加密存储。
曾经有一次我在某知名网站重置密码,结果邮件中居然直接包含以前设置过的密码。我和客服咨询为什么直接将密码发送给用户,客服答曰:“减少用户步骤,用户体验更好”;再问“管理员是否可以直接获知我的密码”, 客服振振有词:“我们用XXX算法加密过的,不会有问题的”。 殊不知,密码加密后一定能被解密获得原始密码,因此,该网站一旦数据库泄露,所有用户的密码本身就大白于天下。
以后看到这类网站,大家最好都绕道而走,因为一家“暴库”,全部遭殃。
入门方案:

将明文密码做单向哈希后存储。
单向哈希算法有一个特性,无法通过哈希后的摘要(digest)恢复原始数据,这也是“单向”二字的来源,这一点和所有的加密算法都不同。常用的单向哈希算法包括SHA-256,SHA-1,MD5等。例如,对密码“passwordhunter”进行SHA-256哈希后的摘要(digest)如下:
“”
可能是“单向”二字有误导性,也可能是上面那串数字唬人,不少人误以为这种方式很可靠, 其实不然。
单向哈希有两个特性:
1)从同一个密码进行单向哈希,得到的总是唯一确定的摘要
2)计算速度快。随着技术进步,尤其是显卡在高性能计算中的普及,一秒钟能够完成数十亿次单向哈希计算
结合上面两个特点,考虑到多数人所使用的密码为常见的组合,攻击者可以将所有密码的常见组合进行单向哈希,得到一个摘要组合,然后与数据库中的摘要进行比对即可获得对应的密码。这个摘要组合也被称为rainbow table。
更糟糕的是,一个攻击者只要建立上述的rainbow table,可以匹配所有的密码数据库。仍然等同于一家“暴库”,全部遭殃。以后要是有某家厂商宣布“我们的密码都是哈希后存储的,绝对安全”,大家对这个行为要特别警惕并表示不屑。有兴趣的朋友可以搜索下,看看哪家厂商躺着中枪了。
进阶方案:

将明文密码混入“随机因素”,然后进行单向哈希后存储,也就是所谓的“Salted Hash”。
这个方式相比上面的方案,最大的好处是针对每一个数据库中的密码,都需要建立一个完整的rainbow table进行匹配。 因为两个同样使用“passwordhunter”作为密码的账户,在数据库中存储的摘要完全不同。
10多年以前,因为计算和内存大小的限制,这个方案还是足够安全的,因为攻击者没有足够的资源建立这么多的rainbow table。 但是,在今日,因为显卡的恐怖的并行计算能力,这种攻击已经完全可行。
专家方案:

故意增加密码计算所需耗费的资源和时间,使得任何人都不可获得足够的资源建立所需的rainbow table。
这类方案有一个特点,算法中都有个因子,用于指明计算密码摘要所需要的资源和时间,也就是计算强度。计算强度越大,攻击者建立rainbow table越困难,以至于不可继续。
这类方案的常用算法有三种:
1)PBKDF2(Password-Based Key Derivation Function)
PBKDF2简单而言就是将salted hash进行多次重复计算,这个次数是可选择的。如果计算一次所需要的时间是1微秒,那么计算1百万次就需要1秒钟。假如攻击一个密码所需的rainbow table有1千万条,建立所对应的rainbow table所需要的时间就是115天。这个代价足以让大部分的攻击者忘而生畏。
美国政府机构已经将这个方法标准化,并且用于一些政府和军方的系统。 这个方案最大的优点是标准化,实现容易同时采用了久经考验的SHA算法。
2) bcrypt
bcrypt是专门为密码存储而设计的算法,基于Blowfish加密算法变形而来,由Niels Provos和David Mazières发表于1999年的USENIX。
bcrypt最大的好处是有一个参数(work factor),可用于调整计算强度,而且work factor是包括在输出的摘要中的。随着攻击者计算能力的提高,使用者可以逐步增大work factor,而且不会影响已有用户的登陆。
bcrypt经过了很多安全专家的仔细分析,使用在以安全着称的OpenBSD中,一般认为它比PBKDF2更能承受随着计算能力加强而带来的风险。bcrypt也有广泛的函数库支持,因此我们建议使用这种方式存储密码。
3) scrypt
scrypt是由着名的FreeBSD黑客 Colin Percival为他的备份服务 Tarsnap开发的。
和上述两种方案不同,scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利用rainbow table进行暴力攻击更加困难。scrypt没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。但是,scrypt在算法层面只要没有破绽,它的安全性应该高于PBKDF2和bcrypt。
来源:坚果云投稿,坚果云是一款类似Dropbox的云存储服务,可以自动同步、备份文件。

7. 加密的历史

密码学的历史发展有哪些呢

1。

古代加密方法(手工阶段) 源于应用的无穷需求总是推动技术发明和进步的直接动力。存于石刻或史书中的记载表明,许多古代文明,包括埃及人、希伯来人、亚述人都在实践中逐步发明了密码系统。

从某种意义上说,战争是科学技术进步的催化剂。人类自从有了战争,就面临着通信安全的需求,密码技术源远流长。

古代加密方法大约起源于公元前440年出现在古希腊战争中的隐写术。当时为了安全传送军事情报,奴隶主剃光奴隶的头发,将情报写在奴隶的光头上,待头发长长后将奴隶送到另一个部落,再次剃光头发,原有的信息复现出来,从而实现这两个部落之间的秘密通信。

公元前400年,斯巴达人就发明了“塞塔式密码”,即把长条纸螺旋形地斜绕在一个多棱棒上,将文字沿棒的水平方向从左到右书写,写一个字旋转一下,写完一行再另起一行从左到右写,直到写完。解下来后,纸条上的文字消息杂乱无章、无法理解,这就是密文,但将它绕在另一个同等尺寸的棒子上后,就能看到原始的消息。

这是最早的密码技术。 我国古代也早有以藏头诗、藏尾诗、漏格诗及绘画等形式,将要表达的真正意思或“密语”隐藏在诗文或画卷中特定位置的记载,一般人只注意诗或画的表面意境,而不会去注意或很难发现隐藏其中的“话外之音”。

比如:我画蓝江水悠悠,爱晚亭枫叶愁。 秋月溶溶照佛寺,香烟袅袅绕轻楼 2。

古典密码(机械阶段) 古典密码的加密方法一般是文字置换,使用手工或机械变换的方式实现。古典密码系统已经初步体现出近代密码系统的雏形,它比古代加密方法复杂,其变化较小。

古典密码的代表密码体制主要有:单表代替密码、多表代替密码及转轮密码。 3。

近代密码(计算机阶段) 密码形成一门新的学科是在20世纪70年代,这是受计算机科学蓬勃发展 *** 和推动的结果。快速电子计算机和现代数学方法一方面为加密技术提供了新的概念和工具,另一方面也给破译者提供了有力武器。

计算机和电子学时代的到来给密码设计者带来了前所未有的自由,他们可以轻易地摆脱原先用铅笔和纸进行手工设计时易犯的错误,也不用再面对用电子机械方式实现的密码机的高额费用。 总之,利用电子计算机可以设计出更为复杂的密码系统。

密码学的历史

密码大事记 公元前5世纪,古希腊斯巴达出现原始的密码器,用一条带子缠绕在一根木棍上,沿木棍纵轴方向写好明文,解下来的带子上就只有杂乱无章的密文字母。

解密者只需找到相同直径的木棍,再把带子缠上去,沿木棍纵轴方向即可读出有意义的明文。这是最早的换位密码术。

公元前1世纪,着名的恺撒(Caesar)密码被用于高卢战争中,这是一种简单易行的单字母替代密码。 公元9世纪, *** 的密码学家阿尔·金迪(al' Kindi 也被称为伊沙克 Ishaq,(801?~873年),同时还是天文学家、哲学家、化学家和音乐理论家)提出解密的频度分析方法,通过分析计算密文字符出现的频率破译密码。

公元16世纪中期,意大利的数学家卡尔达诺(G.Cardano,1501—1576)发明了卡尔达诺漏格板,覆盖在密文上,可从漏格中读出明文,这是较早的一种分置式密码。 公元16世纪晚期,英国的菲利普斯(Philips)利用频度分析法成功破解苏格兰女王玛丽的密码信,信中策划暗杀英国女王伊丽莎白,这次解密将玛丽送上了断头台。

几乎在同一时期,法国外交官维热纳尔(或译为维琼内尔) Blaise de Vigenere(1523-1596)提出着名的维热纳尔方阵密表和维热纳尔密码(Vigenerecypher),这是一种多表加密的替代密码,可使阿尔—金迪和菲利普斯的频度分析法失效。 公元1863,普鲁士少校卡西斯基(Kasiski)首次从关键词的长度着手将它破解。

英国的巴贝奇(Charles Babbage)通过仔细分析编码字母的结构也将维热纳尔密码破解。 公元20世纪初,第一次世界大战进行到关键时刻,英国破译密码的专门机构“40号房间”利用缴获的德国密码本破译了着名的“齐默尔曼电报”,促使美国放弃中立参战,改变了战争进程。

大战快结束时,准确地说是1918年,美国数学家吉尔伯特·维那姆发明一次性便笺密码,它是一种理论上绝对无法破译的加密系统,被誉为密码编码学的圣杯。但产生和分发大量随机密钥的困难使它的实际应用受到很大限制,从另一方面来说安全性也更加无法保证。

第二次世界大战中,在破译德国着名的“恩格玛(Enigma)”密码机密码过程中,原本是以语言学家和人文学者为主的解码团队中加入了数学家和科学家。电脑之父亚伦·图灵(Alan Mathison Turing)就是在这个时候加入了解码队伍,发明了一套更高明的解码方法。

同时,这支优秀的队伍设计了人类的第一部电脑来协助破解工作。显然,越来越普及的计算机也是军工转民用产品。

美国人破译了被称为“紫密”的日本“九七式”密码机密码。靠前者,德国的许多重大军事行动对盟军都不成为秘密;靠后者,美军炸死了偷袭珍珠港的元兇日本舰队总司令山本五十六。

同样在二次世界大战中,印第安纳瓦霍土着语言被美军用作密码,从吴宇森导演的《风语者》Windtalkers中能窥其一二。所谓风语者,是指美国二战时候特别征摹使用的印第安纳瓦约(Navajo)通信兵。

在二次世界大战日美的太平洋战场上,美国海军军部让北墨西哥和亚历桑那印第安纳瓦约族人使用约瓦纳语进行情报传递。纳瓦约语的语法、音调及词汇都极为独特,不为世人所知道,当时纳瓦约族以外的美国人中,能听懂这种语言的也就一二十人。

这是密码学和语言学的成功结合,纳瓦霍语密码成为历史上从未被破译的密码。 1975年1月15日,对计算机系统和网络进行加密的DES(Data Encryption Standard数据加密标准)由美国国家标准局颁布为国家标准,这是密码术历史上一个具有里程碑意义的事件。

1976年,当时在美国斯坦福大学的迪菲(Diffie)和赫尔曼(Hellman)两人提出了公开密钥密码的新思想(论文"New Direction in Cryptography"),把密钥分为加密的公钥和解密的私钥,这是密码学的一场革命。 1977年,美国的里维斯特(Ronald Rivest)、沙米尔(Adi Shamir)和阿德勒曼(Len Adleman)提出第一个较完善的公钥密码体制——RSA体制,这是一种建立在大数因子分解基础上的算法。

1985年,英国牛津大学物理学家戴维·多伊奇(David Deutsch)提出量子计算机的初步设想,这种计算机一旦造出来,可在30秒钟内完成传统计算机要花上100亿年才能完成的大数因子分解,从而破解RSA运用这个大数产生公钥来加密的信息。 同一年,美国的贝内特(Ben)根据他关于量子密码术的协议,在实验室第一次实现了量子密码加密信息的通信。

尽管通信距离只有30厘米,但它证明了量子密码术的实用性。与一次性便笺密码结合,同样利用量子的神奇物理特性,可产生连量子计算机也无法破译的绝对安全的密码。

2003,位于日内瓦的id Quantique公司和位于纽约的MagiQ技术公司,推出了传送量子密钥的距离超越了贝内特实验中30厘米的商业产品。日本电气公司在创纪录的150公里传送距离的演示后,最早将在明年向市场推出产品。

IBM、富士通和东芝等企业也在积极进行研发。目前,市面上的产品能够将密钥通过光纤传送几十公里。

美国的国家安全局和美联储都在考虑购买这种产品。MagiQ公司的一套系统价格在7万美元到10万美元之间。

://dev.csdn/article/62/62594.s。

历史上有哪些关于密码的重大历史事件

致命错误引发历史上最伟大的密码破译事件

--------------------------------------------------------------------------------

这是发生在第一次世界大战时的事情,它在世界情报学历史上占有重要地位,它使得美国举国震怒,结束中立,最终加入到对德作战的行列。

第一次世界大战期间,1917年1月17日,英军截获了一份以德国最高外交密码 0075加密的电报。这个令人无法想象的密码系统由1万个词和词组组成,与1000个数字码群对应。密电来自德国外交部长阿瑟·齐麦曼,传送给德国驻华盛顿大使约翰·冯·贝伦朵尔夫,然后继续传给德国驻墨西哥大使亨尼希·冯·艾克哈尔特。电文将在那里解密,最后要交给墨西哥总统瓦律斯提阿诺·加汉扎。

密件从柏林经美国海底电缆送到了华盛顿。英军在那里将其截获并意识到了它的重要性。英国密码破译专家开始全力以赴进行破译,然而,面对这个未曾被破译的新外交密码系统,专家们绞尽脑筋仍一筹莫展。

令英国密码破译专家意想不到的机遇降临了。接到密件的德国驻华盛顿大使约翰·冯·贝伦朵尔夫在他的华盛顿办公室里犯下了致命的错误:他们在将电报用新的0075密件本译出后,却又用老的密件本将电报加密后传送到墨西哥城。大使没有意识到,他已经犯下了一个密码使用者所能犯的最愚蠢的、最可悲的错误。

没过多久,已经破译了老密码的英方便从德国大使的糊涂操作中获得了新旧密码的比较版本。英国的解码人员开始了艰苦的工作:将密件在旧密码中译出,用纸笔建构模型。随着齐麦曼的密件逐渐清晰,电报内容浮现出来,其重要性令人吃惊。

当时的情况是,尽管1915年美国的远洋客轮“露斯塔尼亚”号被德军击沉,但只要德国此后对其潜艇的攻击行动加以限制,美国仍将一直保持中立。齐麦曼的电文概括了德国要在1917年2月1日重新开始无限制海战以抑制英国的企图。为了让美国无暇他顾,齐麦曼建议墨西哥入侵美国,宣布得克萨斯州、新墨西哥州和亚利桑那州重新归其所有。德国还要墨西哥说服日本进攻美国,德国将提供军事和资金援助。

英国海军部急于将破译的情报通知美国,但同时又不能让德国知道其密码已被破译。于是,英国的一个特工成功地渗入了墨西哥电报局,得到了送往墨西哥总统的解了密的文件拷贝。这样,秘密就可能是由墨西哥方泄露的,它以此为掩护将情报透露给了美国。

美国愤怒了。每个美国人都被激怒了。原先只是东海岸的人在关心战局的进展,现在整个美国都开始担心墨西哥的举动。电文破译后6个星期,美国总统伍德罗·威尔逊宣布美国对德宣战。此时,站在他背后的是一个团结起来的愤怒的国家。齐麦曼的电文使整个美国相信德国是国家的敌人。这次破译由此也被称为密码学历史上最伟大的密码破译。

谁了解密码学的发展历史

介绍密码学的发展历史

密码学的发展历程大致经历了三个阶段:古代加密方法、古典密码和近代密码。

1.古代加密方法(手工阶段)

源于应用的无穷需求总是推动技术发明和进步的直接动力。存于石刻或史书中的记载表明,许多古代文明,包括埃及人、希伯来人、亚述人都在实践中逐步发明了密码系统。从某种意义上说,战争是科学技术进步的催化剂。人类自从有了战争,就面临着通信安全的需求,密码技术源远流长。

古代加密方法大约起源于公元前440年出现在古希腊战争中的隐写术。当时为了安全传送军事情报,奴隶主剃光奴隶的头发,将情报写在奴隶的光头上,待头发长长后将奴隶送到另一个部落,再次剃光头发,原有的信息复现出来,从而实现这两个部落之间的秘密通信。

公元前400年,斯巴达人就发明了“塞塔式密码”,即把长条纸螺旋形地斜绕在一个多棱棒上,将文字沿棒的水平方向从左到右书写,写一个字旋转一下,写完一行再另起一行从左到右写,直到写完。解下来后,纸条上的文字消息杂乱无章、无法理解,这就是密文,但将它绕在另一个同等尺寸的棒子上后,就能看到原始的消息。这是最早的密码技术。

我国古代也早有以藏头诗、藏尾诗、漏格诗及绘画等形式,将要表达的真正意思或“密语”隐藏在诗文或画卷中特定位置的记载,一般人只注意诗或画的表面意境,而不会去注意或很难发现隐藏其中的“话外之音”。

比如:我画蓝江水悠悠,爱晚亭枫叶愁。秋月溶溶照佛寺,香烟袅袅绕轻楼

2.古典密码(机械阶段)

古典密码的加密方法一般是文字置换,使用手工或机械变换的方式实现。古典密码系统已经初步体现出近代密码系统的雏形,它比古代加密方法复杂,其变化较小。古典密码的代表密码体制主要有:单表代替密码、多表代替密码及转轮密码。

3.近代密码(计算机阶段)

密码形成一门新的学科是在20世纪70年代,这是受计算机科学蓬勃发展 *** 和推动的结果。快速电子计算机和现代数学方法一方面为加密技术提供了新的概念和工具,另一方面也给破译者提供了有力武器。计算机和电子学时代的到来给密码设计者带来了前所未有的自由,他们可以轻易地摆脱原先用铅笔和纸进行手工设计时易犯的错误,也不用再面对用电子机械方式实现的密码机的高额费用。总之,利用电子计算机可以设计出更为复杂的密码系统。

怎样清除宏杰加密解密历史记录加密解密的历史记录无法清除 爱问知识

1 解密方法在软件的帮助里面写得很清楚。

最后的办法是利用开始使用的时候填入的邮箱与客服联系解密事宜。 2 你去官方网站下载最新的版本,然后重新安装加密软件,就行了 3 解铃还需系铃人!一般卸载了那个软件也应该可以解密了的!如果不行,那个这个软件就是水货!建议用文件夹加密超级大师。

4 去网上下载个加密破解器。 5 以上4步都没有解密,那就没办法了。

删除软件文件也没办法恢复。联系作者吧!没有更好的办法了。

软件界面上有联系方式的。 最后说一句忠告的话:不要用免费的加密软件,作者会故意留一些缺陷或者漏洞。

历史上有哪些关于密码的重大历史事件

致命错误引发历史上最伟大的密码破译事件 -------------------------------------------------------------------------------- 这是发生在第一次世界大战时的事情,它在世界情报学历史上占有重要地位,它使得美国举国震怒,结束中立,最终加入到对德作战的行列。

第一次世界大战期间,1917年1月17日,英军截获了一份以德国最高外交密码 0075加密的电报。这个令人无法想象的密码系统由1万个词和词组组成,与1000个数字码群对应。

密电来自德国外交部长阿瑟·齐麦曼,传送给德国驻华盛顿大使约翰·冯·贝伦朵尔夫,然后继续传给德国驻墨西哥大使亨尼希·冯·艾克哈尔特。电文将在那里解密,最后要交给墨西哥总统瓦律斯提阿诺·加汉扎。

密件从柏林经美国海底电缆送到了华盛顿。英军在那里将其截获并意识到了它的重要性。

英国密码破译专家开始全力以赴进行破译,然而,面对这个未曾被破译的新外交密码系统,专家们绞尽脑筋仍一筹莫展。 令英国密码破译专家意想不到的机遇降临了。

接到密件的德国驻华盛顿大使约翰·冯·贝伦朵尔夫在他的华盛顿办公室里犯下了致命的错误:他们在将电报用新的0075密件本译出后,却又用老的密件本将电报加密后传送到墨西哥城。大使没有意识到,他已经犯下了一个密码使用者所能犯的最愚蠢的、最可悲的错误。

没过多久,已经破译了老密码的英方便从德国大使的糊涂操作中获得了新旧密码的比较版本。英国的解码人员开始了艰苦的工作:将密件在旧密码中译出,用纸笔建构模型。

随着齐麦曼的密件逐渐清晰,电报内容浮现出来,其重要性令人吃惊。 当时的情况是,尽管1915年美国的远洋客轮“露斯塔尼亚”号被德军击沉,但只要德国此后对其潜艇的攻击行动加以限制,美国仍将一直保持中立。

齐麦曼的电文概括了德国要在1917年2月1日重新开始无限制海战以抑制英国的企图。为了让美国无暇他顾,齐麦曼建议墨西哥入侵美国,宣布得克萨斯州、新墨西哥州和亚利桑那州重新归其所有。

德国还要墨西哥说服日本进攻美国,德国将提供军事和资金援助。 英国海军部急于将破译的情报通知美国,但同时又不能让德国知道其密码已被破译。

于是,英国的一个特工成功地渗入了墨西哥电报局,得到了送往墨西哥总统的解了密的文件拷贝。这样,秘密就可能是由墨西哥方泄露的,它以此为掩护将情报透露给了美国。

美国愤怒了。每个美国人都被激怒了。

原先只是东海岸的人在关心战局的进展,现在整个美国都开始担心墨西哥的举动。电文破译后6个星期,美国总统伍德罗·威尔逊宣布美国对德宣战。

此时,站在他背后的是一个团结起来的愤怒的国家。齐麦曼的电文使整个美国相信德国是国家的敌人。

这次破译由此也被称为密码学历史上最伟大的密码破译。

加密的历史怎么样

《山海经》之中,雄性的性狂想,只是很小很小的一部分,实际上,这部书里充斥着大量的原始性崇拜与性启蒙。

书中的许多故事,如果出现在欧洲,出现在美洲,肯定是早就被解读出来了。但是中国是一个含蓄的国度,虽然中国人口很多,生育率居高不下,但这种事情,做是可以做的,谁要是说出来,那可不见得是好事。

所以中国人有话要说,那我们就只能听到神乎其神的神话:在西北方的海外,赤水的北岸,有座章尾山。山上住着一个神,长着人的面孔、蛇的身子而全身是红色,身子长达一千里,竖立生长的眼睛正中合成一条缝,他闭上眼睛就是黑夜、睁开眼睛就是白昼,不吃饭、不睡觉、不呼吸,只以风雨为食物。

他能照耀阴暗的地方,所以称作烛龙。 我们可以发现,神祇烛阴是男性性特征的夸张表现,而神烛龙,却是女性性特征的极度夸张。

明白了,这个怪神,虽然是对女性性特征的强烈夸张,但仍然充满了男性的狂想。 在这里,男人渴望着这样一种女人,她们不挑不拣、不嫌贫,任何时候都不会拒绝男人,这样的话,男人就不需要打拼奋斗了,不需要赚钱糊口了,只需要和女人没日没夜地欢爱下去,直到地久天长、地老天荒…… 不客气地讲,男人的性狂想走到这步,就有点距现实太远了,所以这两段禁忌性文字,即使化身于两个奇怪的神,也仍然无法登堂入室,进入大众的视线。

但是这种性狂想仍然存在,所以烛阴和烛龙这两个怪神,说不定什么时候还会蹿出来,让人们大吃一惊。除了烛阴和烛龙这两个性神之外,在《山海经》中,甚至连雷神都带有着明显的性特征。

雷泽中有一位雷神,长着龙的身子人的头,他一鼓起肚子就响雷。这个雷神的姿势好怪异……这个雷神,不过是原始社会时期的欲望之神,它很像是非洲土着部落中掌握了部落权力的酋长,将生殖器官用竹木夸张地装饰起来,天天晃荡着在女原始人面前炫耀,要命的是,这些装饰物虽然华美庞大,而且还会弄出巨大的音响效果,可是这些饰物一取掉,原始野男人就立即现了原形…… 正因为原形让人沮丧,所以原始人最爱夸张自己的突凸之物,最爱炫耀自己的性能力——现代文明人也爱这么干,到目前为止,这种夸张与炫耀,仍然是男人的一种习惯与风格。

中国古代密码

中国是世界上最早使用密码的国家之一。而最难破解的“密电码”也是中国人发明的。

反切注音方法出现于东汉末年,是用两个字为另一个字注音,取上字的声母和下字的韵母,“切”出另外一个字的读音。“反切码”就是在这种反切拼音基础上发明的,发明人是着名的抗倭将领、军事家戚继光。戚继光还专门编了两首诗歌,作为“密码本”:一首是:“柳边求气低,波他争日时。莺蒙语出喜,打掌与君知”;另一首是:“春花香,秋山开,嘉宾欢歌须金杯,孤灯光辉烧银缸。之东郊,过西桥,鸡声催初天,奇梅歪遮沟。”

这两首诗歌是反切码全部秘密所在。取前一首中的前15个字的声母,依次分别编号1到15;取后一首36字韵母,顺序编号1到36。再将当时字音的八种声调,也按顺序编上号码1到8,形成完整的“反切码”体系。使用方法是:如送回的情报上的密码有一串是5-25-2,对照声母编号5是“低”,韵母歌编号25是“西”,两字的声母和韵母合到一起了是di,对照声调是2,就可以切出“敌”字。戚继光还专门编写了一本《八音字义便览》,作为训练情报人员、通信兵的教材。

8. 银行加密部分流程

我们来考虑一个报文中到底什么信息是需要加密的,目前一般的做法是只对账号和密码进行加密(也有只对密码加密的),其他的内容不加密的。对账号和密码加密有个术语,叫PinBlock,即PIN块,就是对账号和密码进行DES加密处理后的一个密文数据块。既然使用了DES算法来加密账号和密码,则必然有个Key来加密,那么我们就把这个Key称为PinKey(PIK),就是专门来加密用户账户和密码的Key。

原文链接: https://blog.csdn.net/u011974987/article/details/55506710

1、在ATM机上运行的系统叫ATMC,行内与ATMC直接连接的系统叫ATMP,ATMP再(经过ESB)连接核心账务系统。2、在传输过程中是不会出现明文密码的(但报文整体不一定加密,可能是明文带MAC),所以ATMP不会解密密码,而是校验MAC,再将C端加密的密码转换成核心系统加密的密码,这一步是由P端调用加密机API,在硬件加密机中直接完成的。3、核心系统收到P端的报文后,同样调加密机API生成MAC与P端的MAC对比,并对比密码。4、PIK和MAK确实是经过主密钥加密的,但是调加密机API并不需要送PIK和MAK的值,只需要送密钥的名称,所以无论对对PIK/MAK的加解密,还是对PIN和MAC的加解密都是在加密机中完成的,其他应用系统不需要关心。

链接: https://www.hu.com/question/37455323/answer/134372564
zpk:区域pin密钥,银行卡交换系统和银行A、银行B,分别形成一个区域。
转pin是从一把zpk加密转到另一把zpk加密,这两把zpk可能分属两家银行,也可能是同一个银行的?
ATMP:ATM前置机。
ATM加密后给ATMP(这个加密后的值不是pinblock,不是银行系统识别持卡人用的),
ATMP收到之后,再调用加密机,生成pinblock,然后发给收单行。
整个流程,pin不会出现明文。

阅读全文

与密码加密csdn相关的资料

热点内容
怎么下载扫描二维码的手机app 浏览:725
云服务器创建私有镜像的时候一定要关机吗 浏览:112
php开发学习门户 浏览:385
传奇游戏服务器怎么设置 浏览:823
敲击东西解压完整版 浏览:401
刺络学pdf 浏览:868
怎么给手机文件夹设置封面 浏览:931
汽车保养app怎么用 浏览:62
线程javalock 浏览:896
c语言编译运行结果查看器 浏览:112
androidpx转dip 浏览:841
西藏编译局是什么级别 浏览:1001
php提交代码 浏览:597
如何用命令查找并删除代码块 浏览:582
python初学路线图 浏览:534
matlab遗传算法旅行商问题 浏览:304
将办公软件加入加密软件的进程 浏览:724
联想小新pro14编译器 浏览:462
为什么服务器要关掉icmp协议 浏览:855
源码编辑器如何设置难度 浏览:357