主页 > imtoken安卓版钱包 > 安全技术-2加密算法
安全技术-2加密算法
本课程的学习目标,本课程对应的岗位是架构师和研发工程师的能力。密码是哈希算法的概念和使用,也是对称加密算法和非对称加密算法的概念和使用。最难的一点是不同加密算法的特点和选择合适的加密算法。
本课程的目录是第 1 部分哈希算法和第 2 部分对称加密算法。第三部分是非对称加密算法。
首先我们看一下哈希算法的第一部分。
哈希算法的概念是把任意长度的数据作为输入。通过散列算法得到一个固定长度的输出值。这个输出值称为哈希值,是一种数据压缩映射关系。
我们可以这样理解,哈希算法就是将任意长度的消息压缩成固定长度。这类消息摘要的函数。
哈希算法的应用。首先是mt五算法,它是一种广泛使用的密码散列函数,可以生成一个128位的散列池来保证信息传输的完整性。它是由美国密码学家罗纳德·德里·韦斯特在 1992 年设计的,用于替代 m d 四算法。
下一个算法呢,它是由 NSA 设计的。
它可以生成一个 160 位的哈希值。乍一看,是一个集合,包括二二四、二五六、三八四、五一二。推荐的是二五六和五一二。即 Shasan 是第三代安全散列算法。但是因为它的实现包并不流行,所以在实际开发过程中,我们可能无法找到它的实现包并调用它。
slow-salted hashing 怎么样?它有几种实现。对于慢盐和剥落,它的安全性最高,但性能最低。所以我们要根据实际使用场景来选择。
这里需要提一下,m d 5 和之前的算法都被密码学家们发现了一个又一个的冲突。也就是说,理论上是可以破解的。所以目前这两种算法已经不安全了,在一些相关的安全标准中不推荐使用m d 5和tops。
你可以看看你的系统有没有这两个算法,嗯,你可以回去升级一下。
下面介绍一下java中hash算法的实现。
在java中怎么样。
对于常用算法,可以专门实现。此外,还有一些加密方法的类包,也可以实现常用的加密算法。这里我们以m d 5和sha 2 5 6这两种哈希算法为例进行介绍。如果我们使用java自带的方法类包,可以通过这个方法实现。
那么就是需要我们手动写一个字节转换来进行一些转换的方法。如果我们使用谷歌的Guava类包,那么我们只需要在项目中引入这个Guava的依赖包即可。
那我们后续的加密就很简单了,调整一下他的m d o方法就行了。他在自己的类包中做了一个包。
叉二五六与m d五相同。
现在来看看我题字的文字,通过m t五的官网方法,以及java自带的m d 5加密方法。加密后,看看它的输出是什么。
嗯,很明显,md-5加密是通过guava类包和java自带的类包进行的,得到的字符串是一样的。同理,通过官网得到的字符串和通过java自带的类包输出的字符串是一样的。嗯。
这两种加密方法都没有问题。
在使用的过程中,呃,如果是为了方便,我们可以直接引入netting。谷歌官网类包直接调用一个方法。那么如果不想引入web包,可以直接用java,也可以通过java自带的方法封装一个自己的转换方法。第二部分对称加密算法啊。
对称加密算法的加解密过程是这样的。在对称加密算法中,数据发送方将明文和加密密钥一起通过特殊的加密算法处理,变成复杂的加密密文。
发送出去。
接收方收到密文后,若想解读原文,即原始明文,需要使用加密过程中使用的密钥。
并且相同算法的逆算法对密文进行解密,恢复为可读明文。在对称加密算法的加解密过程中,你其实应该听说他们使用的密钥只有一个。也就是说,收到信件的双方都必须使用这个密钥来加密和解密数据。因此,它被称为对称加密算法。也就是说,在加密和解密的过程中,使用的密钥是相同的,这就是对称性。具有应用早、技术成熟、算法开放、计算复杂度小、加密速度快、效率高等特点。对称加密算法的具体算法实现有des算法和3ds算法。因为它英文叫三联数据设备。
horizon 是 ter t d e a,这个 t 表示三倍。所以我们就叫它 3 d s 或 t d e a,然后是蓝鱼,然后是 rc 5 a e s 和 i d e a。
a es 算法是高级加密标准的缩写,是高级加密标准的缩写。它的出现主要是为了替代des算法,三个d s或者t da。这是我们将重点关注的。它是单一数据加密算法的一般过程。相当于对每个数据块应用 3 次 ds 加密算法。 java中的实现是通过j c e,即crypto包中java x的server组件提供了s ah des t d e s函数等这些加密算法的加解密。
a e s算法,它的全称是高级加密标准,意思是高级加密标准。看来主要是为了替代ds加密。
你应该注意它的key的长度。
只能满足要求,否则会报异常。
我们来看看java中对称加密算法中t d e s的实现。
t d e s 加密需要一个密钥字符串和一个初始向量。该密钥字符串和初始向量共享用于加密和解密。也就是说,在加解密过程中应该使用相同的密钥串和初始向量串。
为了得到正确的加解密。
查看加密过程。
传入密钥 k 和初始向量字符串和明文。嗯,有了这个键,k 字符串就被转换成键 k 的一个 sp e c。
嗯,初始向量参数的s t c 是通过初始向量字符串的转换得到的。
那么。
嗯,我们通过兄弟得到一个t d e s的实例一个比特币对应一个密钥吗,然后进行加密模式的初始化。然后将输入的明文转换成字节后,进行加密处理,最终得到加密后的字节,然后使用base 64的编码器将字节转换成字符串,也就是我们加密后的密文字符串。
然后是解密过程。再次,我们需要使用这个键 k 和初始向量的字符串 um 进行 um 转换。
主要是通过cv类获取t d s,t d e s的实例,然后进行解密模式这样的初始化,然后设置。
嗯,密文转换成字节,然后执行。嗯,解密过程得到解密后的字节,最后将解密后的字节转换成字符串。是我们,解密后的原文,也就是原题。现在让我们执行它。
啊,你可以看到它。
这个,呃,最初的题字,加密后的字符串,然后是解密后得到的原始文本。
a e s算法,它的全称是高级加密标准,意思是高级加密标准。看来主要是为了替代ds加密算法。大家要注意它的密钥长度是否符合要求,否则会报异常。
现在我们来看看对称加密算法中的aes算法。同样,在加解密的过程中,也需要一个共享的key sheet key sheet。嗯,这也是对称加密的本质,它们的密钥都是共享的。好吧,我们来看看它的密钥生成过程,和t d s是不一样的。
看跌的过程,可以自己写。那么这里就是先生成一个安全随机实例,然后放入密钥集,然后生成并获取这个密钥生成器实例,配置安全随机来进行一个概念的过程。 最后生成密钥k。
在加密过程中,首先通过um k shed获取密钥k,然后通过siber类获取a es的实例,然后进行加密方式的初始化,然后将原文转换为字节,然后执行加密过程中得到的加密字节。最后,我使用 64 的倍数的编码将其转换为文本。那么在解密的过程中,我们还是要先得到这个。
餐键。当然,我们可以在实际使用中将获取餐密钥这一步提取出来。
好吧,那么平民获取一个s的实例,然后进行解密模式的初始化,然后将密文转换为字节。因为我面前的密文是用六十四进制转换的,所以现在我通过文字转换成自己,还是得用。不然这里一般会报异常,你可以自己操作,然后加深印象。
然后执行这个解密过程,得到解密后的字节数组。最后将其转为字符串,即恢复为明文。
让我们执行这段代码看看吧。
这是明文,原始明文,然后是加密字符串,这是解密后恢复的er铭文。
嗯,和原来的一样,所以我们这里的er代码实现没有问题。
第三部分是非对称加密算法。
我们来看看非对称加密算法的加解密过程。
首先,在第一种情况下,我们用一个密钥,也就是公钥对明文进行加密,得到密文,然后传送给信息的接收者。
接收方用一个密钥,即私钥解密,得到原始明文。
我们可以看到明文的加密方和密文的解密车间。它使用的密钥是公钥和私钥。它们不使用与对称加密算法相同的密钥。
同样,我们也可以用私钥进行加密,然后用公钥进行解密。这也是非对称加密算法的最大特点。也就是说,在加解密过程中,使用的密钥一个叫公钥,另一个叫私钥,而不是同一个密钥。这是一个有两个密钥的密钥对。
非对称加密算法的具体算法实现如下,典型的有rs a和ec c。啊,另外还有这个算法背包算法,就是这个算法。
如果你有兴趣,可以在课后详细看看。我们将重点介绍本课程中的 ise 和 rsecc 算法。
r s a 算法的源头其实是这三个人在1977年提出的,所以算法是用三个人名字的首字母来命名的。当时,他们三人都在麻省理工学院工作。嗯,这所大学也产生了很多尖端技术。
该算法的特点是为国际标准算法应用,较早、最流行,兼容性较好。一般采用2046位的加密长度,但是对服务器性能的消耗很大。
其实我们可以看到它的加密长度很长。
这种类型的加密通常会消耗更多的服务器性能。
然后是ec c算法。
是一种椭圆曲线加密算法。
啊,是这三个英文单词第一个字母的缩写,是一种基于椭圆曲线数学理论的非对称加密算法。与 i s a e c c 相比的优势在于,可以使用较短的密钥来实现与 r s a 相当或更快的更高安全性。
其特点是新一代算法趋势,主流一般采用256位加密长度,加密速度更快,效率更高。服务端资源消耗低,最重要的是更安全,更抗攻击。
下面,我们还将演示rs a和ec c这两种算法的代码实现。
现在让我们看看非对称加密算法。首先我们来看看rsa非对称加密算法,因为它在加解密过程中使用了不同的密钥。也就是说,一个使用公钥,另一个使用私钥。但是这个公钥和私钥是成对存在的。所以我们这个演示的代码首先初始化了一个密钥对。
我们通过密钥对生成器将其取出。
获取此 rsa 算法的密钥对。
好吧,生成器的一个实例,然后是一个初始化。嗯,根据我们配置的这个。
啊,密钥的长度得到了一个嗯。
密钥对。
嗯,在这个神殿团队中,会生成对应的公钥和私钥。这是我们指定的原文。
然后我们在加密过程中使用的公钥的解密过程中使用对应的私钥。
让我们看一下使用公钥加密的过程。
首先一个比特币对应一个密钥吗,我们呃。
从密钥工厂获取。
一个实例。
然后通过这个密钥工厂来cyber或者得到对应的算法,然后得到一个er的实例来执行这个。
好了,加密模式的初始化,这里是使用的公钥,然后通过执行加密过程得到加密的字节码。最后,我们使用base 6或4的encoder将其转换成字符串。
然后我们用私钥解密。首先,第一步是通过base 64对输入的加密字符串进行扣除处理。
转换为字节数组。
同理,我们通过这个密钥工厂获取is a的一个工厂,然后通过cyber获取这个rs a对应的算法实例,执行解密模式的初始化。然后通过c执行一个解密过程,得到解密后的字体,最后转换成字符串。
现在让我们来看看。
执行的代码执行这个代码。
啊,你可以看到这是我们用公钥加密后得到的字符串。这就是我们。
解密后,用私钥解密得到的字符串与原文一致,所以我们的加解密过程没有问题。
那我们再来看看ecc算法。
因为 j d k 本身不支持 ec c 算法,所以需要用到这个。
啊,内裤。
首先,我们需要将它的依赖导入到我们的项目中。
然后我们需要编写一个测验方法。事实上,默认情况下,这个安全性会在开头添加为提供者。
之后,它会默认使用这个 n c custom uh provider。
首先,我们还是要初始化一个很棒的pair。
然后,得到对应的公钥和私钥,然后用公钥加密,再用私钥解密。这里也是。
保持空气发生器。
做一个初始化表达式密钥对。
然后在加密过程中。
也仍然使用这个类来获取这个。
啊。
获取c b对应的ec c实例,进行加密模式的初始化。然后进行加密过程,得到四位解码,最后用六十四进制转换成字符串。
在解密过程中,如前所述,是因为基数六或四编码后,解码时还是得用到。
否则会报异常。
然后执行cable这个实例来获取,然后初始化解密模式,然后执行解密最后转换成字符串。最后,让我们执行一下这段代码,看看吧。
嗯,这是加密后的字符串,然后解密后的字符串和原来的一样。原来明文是一致的,所以这种方法是没有问题的。
本课主要内容结束,我们将复习本课。
我们在这节课中学到了什么?请务必掌握这两个内容,一是哈希算法,二是对称加密和非对称加密的区别。
下面有几个问题需要测试。首先是哈希算法的加密过程是什么?哈希算法的加密是可逆的吗?
第二个问题,对称加密的加解密过程是怎样的?
他带来的钥匙是共享的还是不共享的?三是非对称加密的加解密过程是怎样的。
是否使用相同的密钥进行加密和解密?
你可以考虑一下。