iossha加密解密
㈠ iOS中的签名机制
说到签名机制,首先要了解一下 加密解密 ,签名文件就是 加密解密 的过程。
加密 是将明文信息改变为难以读取的密文内容,使之不可读的过程。
解密 是通过特殊的对象,将密文还原为正常可读的内容的过程。而在这个过程中,我们所使用的方法,就是加密解密算法。
加密分为 对称加密 与 非对称加密(公开密钥加密) 。
对称加密就是加密和解密使用的都是同一套密钥
常见的对称密码算法有:
如下图,在使用对称密码时,一定会遇到密钥配送问题, 假设,Alice将使用对称密码加密过的消息发给了Bob, 只有将密钥发送给Bob,Bob才能完成解密, 在发送密钥过程中,可能会被Eve窃取密钥,最后Eve也能完成解密。
加密和解密使用的不是同一个密钥,即为非对称加密算法,也称公开密钥加密;
公钥密码中,密钥分为加密密钥、解密密钥2种,它们并不是同一个密钥, 公钥密码也被称为非对称密码(Asymmetric Cryptography)
在公钥密码中:
加密密钥 ,一般是公开的,因此该密钥称为 公钥 (public key)
解密密钥 ,由消息接收者自己保管的,不能公开,因此也称为 私钥 (private key) 公钥和私钥是一 一对应的,是不能单独生成的,一对公钥和密钥统称为密钥对(key pair)
这样就能 解决秘钥配送的问题 了,如下图:
上图解析:
这其中如果有第三者窃听,只有第2步和第4步能够监听数据,由于Bob公钥是公开的谁都可以获取,那么第二步也不用担心被谁获取,第4步如果数据被第三者截获,那么他看到的也是加密后的数据,由于他没有Bob的私钥,那么他也无法知道消息的真实内容。而且他即使篡改密文消息也无任何意义。
虽然非对称加密解决了密钥配送问题,但是它的加解密速度较慢,下面我们总结一下对称和非对称加密的优缺点:
混合密码 系统,是将对称密码和公钥密码的优势相结合的方法:
为本次通信随机生成的临时密钥; 作为对称密码的密钥,用于加密消息,提高速度
首先,消息发送者要拥有消息接收者的公钥; 生成会话密钥,作为对称密码的密钥,加密消息; 用消息接收者的公钥,加密会话密钥; 将前2步生成的加密结果,一并发给消息接收者。
发送出去的内容包括
用会话密钥加密的消息(加密方法:对称密码)
用公钥加密的会话密钥(加密方法:公钥密码)
1 消息接收者用自己的私钥解密出会话密钥
2 再用第1步解密出来的会话密钥,解密消息
发送过程,加密过程
接收过程,解密过程
1.Bob利用自己的私钥解密会话密钥(使用的是公钥密码解密,也就是非对称密码解密)
2.Bob利用会话密钥解密发送过来的消息(使用的是对称密码解密)
上面的加密算法解决了数据传输的安全问题,那么 数据的完整性 是没法验证的,就是我这个数据有没有被改过,因为公钥大家都能获取,如果有中间人拦截了消息,并改动了内容。那么我们如何验证这个 消息有没有变动 呢?
单向散列函数 ,又称单向 Hash函数 、 杂凑函数 ,就是把任意长的输入消息串变化成 固定长的输出串 且由输出串难以得到输入串的一种函数。这个输出串称为该消息的散列值。一般用于产生消息摘要,密钥加密等
单向散列函数,可以根据根据消息内容计算出散列值 散列值的长度和消息的长度无关 ,无论消息是1bit、10M、100G,单向散列函数都会计算出 固定长度的散列值 。
单向散列函数 ,又被称为 消息摘要函数 (message digest function),哈希函数输出的散列值,也被称为消息摘要(message digest)、指纹(fingerprint)
MD4、MD5 产生128bit的散列值,MD就是Message Digest的缩写,目前已经不安全 Mac终端上默认可以使用md5命令
SHA-1 产生160bit的散列值,目前已经不安全
SHA-2 SHA-256、SHA-384、SHA-512,散列值长度分别是256bit、384bit、512bit
SHA-3 全新标准
不同的数据生成的散列值是不一样的,只要你对一个文件改动过,那么它的散列值就会发生变化,要想确定我们的数据有没有发生变化,只要对比两次散列值相不相同就可以了,我们常常做的登录功能,在保存用户密码的时候就采用单项散列函数生成的值来进行保存,防止第三方人员串改密码。
数据防篡改的技术我们知道了,在数据传输的过程中,我们对数据生成一个散列值,和发送的数据一并发给接收者,当接收者收到这个数据的时候,它拿接收到的数据重新生成散列值,然后跟接收到的散列值进行比较,就可以判断这个数据有没有被人改过。
到此我们通过混合密码技术解决的传输数据的保密性,通过单项散列函数确定数据的一致性,但是还是没有解决 中间人截获篡改 的问题,因为散列函数中间人也可以重新生成一次,接下来我们就要讲数字签名了,他可以对消息发送者的真实性进行认证。
数字签名 (又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。
说白了就是用用消息发送者的私钥进行签名就是数字签名
在数字签名中,任何人都可以使用公钥验证签名
在数字签名技术中,有以下2种行为:
生成签名 由消息的发送者完成,通过“签名密钥”生成
验证签名 由消息的接收者完成,通过“验证密钥”验证
数字签名由于是消息发送者的私钥进行签名,消息发送者的私钥只有他自己拥有,别人是没有的,从而我们通过私钥进行签名,别人通过消息发送者的公钥就能确定消息发送者的真实身份。
接下来我们看一下数字签名和公钥密码的对比:
上图Alice将要发送的消息用自己的私钥加密,发送给Bob,Bob用Alice的公钥解密消息,这里其实有一个不好的点,就是如果Alice如果发送的消息比较大,比如发1GB的视频文件,那这个签名过程就太慢了,本身非对称加密的速度就是比较慢的,
下面我们来看一个改进版的:
这里我们将要发送的消息先生成固定大小的散列值,然后再签名,这样签名文件就小的多了,然后我们将消息和签名一同发送该Bob,然后Bob再用公钥解密 对比等。
下面有关数字签名的一些点进行一下说明:
1 如果有人篡改了文件内容或者签名内容,会是什么结果? 结果是:签名验证失败,证明内容会篡改
2 数字签名不能保证机密性? 数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改
3 数字签名的作用
数字签名是能确定消息发送者,前提是你要确定你获取的公钥是确定是消息发送者的,如果你拿到的公钥是中间人伪造的,那么你就无法验证消息发送者的真实性了,就如下图:
[图片上传中...(image-b6d6e1-1614756605461-3)]
A问B要公钥,M从监听到了中间,B给A发的公钥被M拦截了并保存,M把他自己的公钥给了A,A以为这个公钥是B的,A用公钥加密发消息给B,M拦截然后用自己的私钥解密,修改消息内容后,然后用保存的公钥加密把消息发送给B,B解密消息。A,和B都以为是正常通信的,但消息确实不是那个消息了,那么如何确定公钥合法?也就是如何确定这个公钥就是B的呢?
接下来就是我们要讲的证书了,我们引入一个第三方权威机构来认正,说这个公钥就是B的。接下来我们来看一下。
CA是证书的签发机构,它是公钥基础设施(Public Key Infrastructure,PKI)的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。
CA 拥有一个证书(内含公钥和私钥)。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书,密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似 里面有姓名、邮箱等个人信息,以及此人的公钥; 并由认证机构(Certificate Authority,CA)施加数字签名。
图已经表示的很清楚了,消息发送者先向CA机构 注册自己的证书,那么任何拿到消息发送者的公钥都可以向CA进行验证公钥的真实性。
首先我们要知道iOS签名机制的作用是什么?
保证安装到用户手机上的APP都是经过Apple官方允许的
不管是真机调试,还是发布APP,开发者都需要经过一系列复杂的步骤:
大致如下图:
[图片上传中...(image-169a4f-1614756605461-0)]
总结:
1、.cerSigningRequest文件 : Mac公钥
2、.cer文件:利用Apple私钥(CA),对Mac公钥生成了数字签名
3、.mobileprovision : 利用Apple私钥,对【.cer证书 + devices + AppID + entitlements】进行数字签名
㈡ 字符串的加密与解密(3DES、sha1、MD5) - swift3.1
对于字符串的加密解密,可以给String类扩展方法,方便使用
Swift中使用3DES/sha1/MD5加密解密算法 必须要引入这个库 - 在桥接文件中
#import <CommonCrypto/CommonCrypto.h>
3DES的加密是可逆的, sha1和MD5的是不可逆的
使用方法:
直接在xib界面拖一个textFiled的控件,然后放置3个按钮,分别是进行MD5、sha1、3DES加密点击方法,然后分别测试加密解密数据
可以参考文章 http://www.cnblogs.com/jukaiit/p/5039803.html
使用这个第三方来实现 JKEncrypt
** https://github.com/jukai9316/JKEncrypt 。**
㈢ SHA256 加密后能不能解密
SHA是散列算法,不是加密算法,不存在解密的问题。
原因:
对数据解密破解就是找到任意一个源数据,能够生成相同的目标数据。
SHA256基本上是不可破解的,即找不到(或概率极小)“碰撞”结果。
网站的解密规则:
网站从浏览器发送过来的信息当中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
(3)iossha加密解密扩展阅读:
加密解密过程中,浏览器对网站的验证:
1、验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
2、如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
3、使用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
㈣ Mac OS X:如何验证 SHA
要验证从“Apple 下载”网站手动下载的软件更新(这些更新包含 SHA-1 摘要),请执行以下步骤:1. 打开终端(位于“/Applications/Utilities”下)。 SHA-1 摘要按如下形式显示:SHA1 (文件的完整路径)= [校验和大小] SHA1(/Users/myaccount/Documents/1024SecUpd2003-03-03.dmg) =其他信息关于SHA-1SHA-1 实际上是数据文件的安全校验和。SHA-1 校验和基于某种加密标准。对于给定的文件,SHA-1 会产生一个 160 位的加密输出,此输出称作“消息摘要”。经过修改的数据集极不可能会产生同样的消息摘要。如果文件在传输过程中遭到修改,其消息摘要也会发生变化。 SHA-1 和“Apple 下载”网站可以从 Apple 下载网站下载可手动安装的更新。Apple 在某些“Apple 下载”网站中使用了 SHA-1 摘要,因此您可以验证(可信性很高)您所下载的软件是否就是自己想要下载的软件(请参阅下面的“相关文档”)。当您所下载的文件的 SHA-1 摘要与“Apple 下载”网站上为该文件显示的摘要匹配时,您便可以确定该文件是真实的。为了最大限度地保证安全,可以使用安全的 https 下载页面来下载手动更新。例如,Mac OS�0�2X�0�2v10.6.6 组合更新的手动下载 URL 为:
㈤ ios中https的证书链接验证的简单理解
https是运行在 TLS/SSL之上的http,与http醒目就是在数据传输的安全性问题上做了提高,其实原理也很简单,就是所谓的 对称加密 和 非对称加密
01. 对称加密只有一个密钥,加密和解密都用这个密钥
02.非对称加密有公钥和私钥,私钥加密后的内容只有公钥才能解密,公钥加密的内容只有私钥才能解密。
为了提高安全性,通常的做法是使用对称加密的方法进行加密,但是对称加密也有问题,双方通信的开始总会以明文的方式传输密钥。那么一开始这个密钥就泄露了,所以风险不言而喻。。。
所以TLS/SSL在握手的阶段,结合非对称加密的手段,保证只有通信双方才知道对称加密的密码;
数字证书的生成是分层级的,下一级的证书需要其上一级证书的私钥签名。
所以后者是前者的证书颁发者,也就是说上一级证书的Sbuject Name 是其下一级证书的 Issure Name.
在得到证书申请者的一些必要信息(对象名称,公钥私钥)之后,证书颁发者通过 SHA-256 哈希得到证书内容的摘要,再用自己的私钥给这份摘要加密,得到数字签名。综合已有的信息,生成分别包含公钥和私钥的两个证书。
01.根证书是自签名的,即用自己的私钥签名,不需要其他证书的私钥来生成签名
02.当客户端走https访问站点时,服务器会返回整个证书链。
01. 信任链中如果只含有有效证书并且可信锚点结尾,那么这个证书就被认为是有效的。可信锚点指的是系统隐式信任证书,通常是包括在系统中的CA根证书,不过可以在验证证书链时,设置自定义证书为可信锚点。
02. NSURLSession实现https,使用 NSURLSession 走 HTTPS 访问网站,-URLSession:didReceiveChallenge:completionHandler: 回调中会收到一个 challenge,也就是质询,需要你提供认证信息才能完成连接,这时候可以通过 challenge.protectionSpace.authenticationMethod 取得保护空间要求我们认证的方式,如果这个值是 的话,我们就可以插手 TLS 握手中“验证数字证书有效性”这一步。
系统的默认实现(也即代理不实现这个方法)是验证这个信任链,结果是有效的话则根据 serverTrust 创建 credential 用于同服务端确立 SSL 连接。否则会得到 “The certificate for this server is invalid...” 这样的错误而无法访问。
比如在访问 https://www.google.com 的时候咧,我们不实现这个方法也能访问成功的。系统对 Google 服务器返回来的证书链,从叶节点证书往根证书层层验证(有效期、签名等等),遇到根证书时,发现作为可信锚点的它存在与可信证书列表中,那么验证就通过,允许与服务端建立连接。
看考地址: http://www.cnblogs.com/oc-bowen/p/5896041.html 02. ios中的网络加密
㈥ ios手机115sha1码怎么用
使用115网盘分享链接下载文件的方法如下:
1、可以看到他人分享的115网盘文件链接,点击复制按钮。
2、在浏览器的地址栏中粘贴该链接并回车。
3、然后在提取文件的输入框中编辑对应的访问码,点击确定按钮。
4、页面跳转以后可以看到已经找到了该文件,勾选文件以后点击下载按钮。
㈦ sha256可以解密吗
SHA是散列算法,并非加密算法,也当然也不存在解密的问题。正确的说法应该叫“破解”。所谓破解就是找到任意一个源数据,能够生成相同的目标数据,即“碰撞”。目前的计算能力下,SHA256基本上是不可破解的,即找不到(或概率极小)“碰撞”结果。
㈧ 简单讲解iOS应用开发中的MD5加密的使用
一、简单说明
1.说明
在开发应用的时候,数据的安全性至关重要,而仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题。
如:可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据
“青花瓷”软件
因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交
2.常见的加密算法
MD5 SHA DES 3DES RC2和RC4 RSA IDEA DSA AES
3.加密算法的选择
一般公司都会有一套自己的加密方案,按照公司接口文档的规定去加密
二、MD5
1.简单说明
MD5:全称是Message Digest Algorithm 5,译为“消息摘要算法第5版”
效果:对输入信息生成唯一的.128位散列值(32个字符)
2.MD5的特点
(1)输入两个不同的明文不会得到相同的输出值
(2)根据输出值,不能得到原始的明文,即其过程不可逆
3.MD5的应用
由于MD5加密算法具有较好的安全性,而且免费,因此该加密算法被广泛使用
主要运用在数字签名、文件完整性验证以及口令加密等方面
4.MD5破解
MD5解密网站:http://www.cmd5.com
5.MD5改进
现在的MD5已不再是绝对安全,对此,可以对MD5稍作改进,以增加解密的难度
加盐(Salt):在明文的固定位置插入随机串,然后再进行MD5
先加密,后乱序:先对明文进行MD5,然后对加密得到的MD5串的字符进行乱序
总之宗旨就是:黑客就算攻破了数据库,也无法解密出正确的明文
代码示例:
复制代码 代码如下:
#import "HMViewController.h"
#import "NSString+Hash.h"
#define Salt @"fsdhjkfhjksdhjkfjhkd546783765"
@interface HMViewController ()
@end
@implementation HMViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self digest:@"123"]; //
[self digest:@"abc"];
[self digest:@"456"];
}
/**
* 直接用MD5加密
*/
- (NSString *)digest:(NSString *)str
{
NSString *anwen = [str md5String];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
/**
* 加盐
*/
- (NSString *)digest2:(NSString *)str
{
str = [str stringByAppendingString:Salt];
NSString *anwen = [str md5String];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
/**
* 多次MD5
*/
- (NSString *)digest3:(NSString *)str
{
NSString *anwen = [str md5String];
anwen = [anwen md5String];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
/**
* 先加密, 后乱序
*/
- (NSString *)digest4:(NSString *)str
{
NSString *anwen = [str md5String];
// 注册: 123 ----
// 登录: 123 ---
NSString *header = [anwen substringToIndex:2];
NSString *footer = [anwen substringFromIndex:2];
anwen = [footer stringByAppendingString:header];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
@end
(1)直接使用MD5加密(去MD5解密网站即可破解)
(2)使用加盐(通过MD5解密之后,很容易发现规律)
(3)多次MD5加密(使用MD5解密之后,发现还是密文,那就接着MD5解密)
(4)先加密,后乱序(破解难度增加)
三、注册和验证的数据处理过程
1.提交隐私数据的安全过程 – 注册
2.提交隐私数据的安全过程 – 登录
㈨ iOSRSA加密和SHA验签
RSA是一种非对称加密算法,常用来对传输数据进行加密,配合上数字摘要算法,也可以进行文字签名。
padding即填充方式,由于RSA加密算法中要加密的明文是要比模数小的,padding就是通过一些填充方式来限制明文的长度。后面会详细介绍padding的几种模式以及分段加密。
加密:公钥放在客户端,并使用公钥对数据进行加密,服务端拿到数据后用私钥进行解密;
加签:私钥放在客户端,并使用私钥对数据进行加签,服务端拿到数据后用公钥进行验签。
前者完全为了加密;后者主要是为了防恶意攻击,防止别人模拟我们的客户端对我们的服务器进行攻击,导致服务器瘫痪。
RSA使用“密钥对”对数据进行加密解密,在加密解密前需要先生存公钥(Public Key)和私钥(Private Key)。
公钥(Public key): 用于加密数据. 用于公开, 一般存放在数据提供方, 例如iOS客户端。
私钥(Private key): 用于解密数据. 必须保密, 私钥泄露会造成安全问题。
iOS中的Security.framework提供了对RSA算法的支持,这种方式需要对密匙对进行处理, 根据public key生成证书, 通过private key生成p12格式的密匙
首先我们要会生成RSA密钥文件,现在一步步的来给大家展示一下,如何生成我们所需的公钥和私钥文件:
$ openssl genrsa -out private.pem 1024
openssl:是一个自由的软件组织,专注做加密和解密的框架。
genrsa:指定了生成了算法使用RSA
-out:后面的参数表示生成的key的输入文件
1024:表示的是生成key的长度,单位字节(bits)
$ openssl req -new -key private.pem -out rsacert.csr
可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。(要收费的)
$ openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
509是一种非常通用的证书格式。
将用上面生成的密钥privkey.pem和rsacert.csr证书请求文件生成一个数字证书rsacert.crt。这个就是公钥
$ openssl x509 -outform der -in rsacert.crt -out rsacert.der
注意: 在 iOS开发中,公钥是不能使用base64编码的,上面的命令是将公钥的base64编码字符串转换成二进制数据
在iOS使用私钥不能直接使用,需要导出一个p12文件。下面命令就是将私钥文件导出为p12文件。
$ openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt
IOS客户端的加解密首先我们需要导入Security.framework,
在ios中,我们主要关注四个函数
RSA算法有2个作用一个是加密一个是加签。从这几个函数中,我们可以看到,我们第一种是使用公钥能在客户端:加密数据,以及服务器端用私钥解密。
第二个就是用私钥在客户端加签,然后用公钥在服务器端用公钥验签。第一种完全是为了加密,第二种是为了放抵赖,就是为了防止别人模拟我们的客户端来攻击我们的服务器,导致瘫痪。
(1)获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥 (2)加密 (3)解密
(1)获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥 (2)获取待签名的Hash码 (3)获取签名的字符串 (4)验证
(1)私钥用来进行解密和签名,是给自己用的。
(2)公钥由本人公开,用于加密和验证签名,是给别人用的。
(3)当该用户发送文件时,用私钥签名,别人用他给的公钥验证签名,可以保证该信息是由他发送的。当该用户接受文件时,别人用他的公钥加密,他用私钥解密,可以保证该信息只能由他接收到。
使用事例:
Demo链接
㈩ 加密算法总结
iOS加密相关算法框架:CommonCrypto
明文: 明文指的是未被加密过的原始数据。
密文: 明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。
密钥: 密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。
对称加密又叫做私钥加密 ,即信息的发送方和接收方使用 同一个密钥 去加密和解密数据。
对称加密的特点是 算法公开、计算量少、加密和解密速度快效率高 ,适合于对大数据量进行加密;
缺点是 双方使用相同的密钥、密钥传输的过程不安全、易被破解、因此为了保密其密钥需要经常更换
常见的对称加密算法有 AES、DES 、3DES、TDEA、Blowfish、RC5和IDEA。【不过DES被认为是不安全的】
加密过程:明文 + 加密算法 + 私钥 => 密文
解密过程: 密文 + 解密算法 + 私钥 => 明文
对称加密中用到的密钥叫做 私钥 ,私钥表示个人私有的密钥,即该密钥不能被泄露。
其 加密过程中的私钥与解密过程中用到的私钥是同一个密钥 ,这也是称加密之所以称之为“对称”的原因。由于对称加密的 算法是公开 的,所以一旦私钥被泄露,那么密文就很容易被破解,所以对称加密的 缺点是密钥安全管理困难 。
3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密。是DES像AES过渡的加密算法,是DES的一个更安全的变形,它以DES为基本模块,通过组合分组方法设计出分组加密算法。
非对称加密也叫做公钥加密 。非对称加密与对称加密相比,其安全性更好。对称加密的通信双方使用相同的密钥,如果一方的密钥遭泄露,那么整个通信就会被破解。而 非对称加密使用一对密钥,即公钥和私钥 , 且二者成对出现 。私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。两种使用方法:
哈希算法加密是通过哈希算法对数据加密、加密后的结果不可逆,即加密后不能在解密。
SHA加密,安全哈希算法,主要适用于数字签名签名标准( DSS )里面定义的数字签名算法( DSA )。对于长度小于 2^64 位的消息, SHA1 会产生一个160位的消息摘要。当接收消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。当然除了 SHA1 还有 SHA256 以及 SHA512 等。
HMAC加密,给定一个密钥,对明文加密,做两次“散列”,得到的结果还是32位字符串。
就是或、与、异或、或者加上某个数据
特点:可逆、原始数据和加密数据长度保持一致