对称密钥

EncryptHelper

风格不统一 提交于 2019-12-01 23:36:25
using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace NugetLibs.HelpTool { /// <summary> /// 加解密帮助类 /// </summary> public class EncryptHelper { #region 默认密钥定义 /// <summary> /// 默认加密密钥 /// </summary> public const string DefaultDESKey = @"12345678"; /// <summary> /// 默认加密向量 /// </summary> public const string DefaultDESIV = @"1234567812345678"; /// <summary> /// 默认加密密钥 /// </summary> public const string Default3DESKey = @"123456781234567812345678"; /// <summary> /// 默认加密向量 /// </summary> public const string Default3DESIV = @"1234567812345678"; ///

Aes加密/解密示例项目

半腔热情 提交于 2019-12-01 23:22:15
#AesEncrypt:Aes加密/解密示例项目 <br>   附件中的“AesEncrypt.zip”是本项目的exe文件,可直接下载下来运行和查看。    *高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。* <br>   好的百科已普及,现在来看看这Aes怎么使用,由于需要把加密后的byte[]输出成字符串,但是普通字符串无法兼容,所以这里使用的base64字符串。详见代码AesEncrypt\AesEncrypt.cs。<br>   为了直观的看到Aes的加解密过程,现在给出几个示例,如下图<br>   1.在“未加密”的文本框中输入一个普通的字符串,点击“加密”按钮,将在”已加密“的文本框中得到一个Aes加密后的base64字符串。 **这个“已加密”的base64字符串就可以放到系统中使用了,例如可以填到数据库链接字符串,也可以存储得到数据中。** <br>  

iOS 常见信息加密方法

拟墨画扇 提交于 2019-12-01 23:18:31
NO.1 MD5 MD5加密是最常用的加密方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码。MD5主要特点是不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是绝对的,但基本是不能一样的)。 MD5算法还具有以下性质: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。 4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。 MD5虽然说是不可逆的 但是由于有网站http://www.cmd5.com的存在,专门用来查询MD5码 所以有的简单的MD5码是可以在这里搜到源码的。 为了让MD5码更加安全涌现了很多其他方法如加盐。 盐要足够长足够乱 得到的MD5码就很难查到。 NO.2 HMAC 此加密方法需要先生成密钥,然后再对密码进行MD5和HMAC加密,数据库中需要存放当时使用的密钥和密码加密后的密文 在用户登陆时 再次对填入的密码用密钥进行加密 并且还要加上当前时间(精确到分钟) 再次HMAC加密,服务器里也会拿出以前存放的密文加上时间再次加密。所以就算黑客在中途截取了密码的密文

iOS里常见的几种信息编码、加密方法简单总结

夙愿已清 提交于 2019-12-01 23:18:17
一.MD5 MD5编码是最常用的编码方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码。 MD5主要特点是 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是绝对的,但基本是不能一样的)。 MD5算法还具有以下性质: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。 4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。 MD5虽然说是不可逆的 但是由于有网站http://www.cmd5.com的存在,专门用来查询MD5码 所以有的简单的MD5码是可以在这里搜到源码的。 为了让MD5码更加安全 涌现了很多其他方法 如加盐。 盐要足够长足够乱 得到的MD5码就很难查到。 终端代码: $ md5 -s "abc" 给字符串abc加密 $ echo -n abc|openssl md5 给字符串abc加密 二.HMAC加密 此加密方法需要先生成密钥,然后再对密码进行MD5和HMAC加密,数据库中需要存放当时使用的密钥和密码加密后的密文 在用户登陆时 再次对填入的密码用密钥进行加密

python笔记43-加解密AES/CBC/pkcs7padding

大憨熊 提交于 2019-12-01 20:40:48
前言 有些公司对接口的安全要求比较高,传参数的时候,不会明文的传输,先对接口加密,返回的数据也加密返回。 目前比较常见的加密方式是AES/CBC/pkcs7padding。 AES五种加密模式 在AES加密时,一般使用了“AES/ECB/NoPadding”或“AES/ECB/PKCS5padding” 或 “AES/ECB/PKCS5padding” 的模式 使用AES加密的ECB模式,显式指定加密算法为:CBC或CFB模式,可带上PKCS5Padding填充。AES密钥长度最少是128位,推荐使用256位 AES-ECB模式加密在加密和解密是需要一个初始化向量(Initialization Vector, IV),在每次加密之前或者解密之后,使用初始化向量与明文或密文异或。 分组密码有五种工作体制: 1.电码本模式(Electronic Codebook Book (ECB)); 2.密码分组链接模式(Cipher Block Chaining (CBC)); 3.计算器模式(Counter (CTR)); 4.密码反馈模式(Cipher FeedBack (CFB)); 5.输出反馈模式(Output FeedBack (OFB)) AES算法是典型的【对称加密算法】,所谓对称加密,就是加密和解密的秘钥是一样的 JAVA加密 一般我们做接口自动化测试的时候

网络安全-数据加密技术

折月煮酒 提交于 2019-12-01 18:35:40
总结来源: 《计算机网络信息安全及应对策略研究》 衷奇 一、数据加密   数据加密就是对传输中的数据流加密,可以使用线路加密和端对端加密两种方法。 线路加密不考虑源加密传输线路。端对端加密则是使用者用加密软件在端的两头进行加密工作,然后进入TCP/IP数据包封装穿过互联网。   最常用的加密技术有对称加密技术和非对称加密技术。 二、对称加密 在对称加密技术中,对信息的加密和解密都使用相同的密钥,和一把钥匙开一把锁同理。 不足:如果交换一方有N个交换对象,那么他就要维护N个私有钥匙。 三、非对称加密   在非对称加密体系中,密钥被分解为(即公钥和私钥)。这对密钥中任何一把都可以作为公开密钥(加密密钥)通过非保密方式向他人公开,而另一把作为私有密钥(解密密钥)加以保存。 不足:公开密钥难以鉴别发送者。可配合数字签名机制使用。数字签名机制提供的鉴别方法,以解决伪造、抵赖、冒充和篡改等问题。 来源: https://www.cnblogs.com/Neavotre/p/11712447.html

对称加密与非对称加密和HTTPS

独自空忆成欢 提交于 2019-12-01 16:25:55
为什么需要加密,因为HTTP是明文传输,不安全。 对称加密 浏览器和服务器使用同一个密钥进行加密和解密。没有该密钥不能获取到传输的内容。看似是正确的没有错误。但是怎么保证该密钥能安全的让双方知道呢,服务器生成密钥发送给浏览器的过程中是有可能被截获该密钥的。有的人可能会想,如果浏览器一开始就有该密码就可以了,但是你想想让浏览器去保存所有HTTPS网站的密钥?这不现实吧。 非对称加密 浏览器和服务器同时拥有公钥和私钥,公钥用来加密,私钥用来解密。公钥是可以在网络中传输的。 过程是这样的: 浏览器拥有公钥A和私钥A',服务器拥有公钥B和私钥B' 浏览器向服务器发送请求时,服务器明文传输公钥B给浏览器。 浏览器用公钥B进行加密发送给服务器,服务器收到后用私钥B'进行解密,因为只有服务器有该密钥B',所以是安全的。 同理,服务器向浏览器传输的道路上用浏览器的公钥加密,浏览器收到后用浏览器的私钥进行解密。 这样两条路的安全都可以保证是安全的了(其实是不安全的) 先抛开非对称加密的不安全性不说来谈谈为什么HTTPS不是用的这种加密? 很简单,这种方式太过于繁琐和耗时,效率不高。而对称加密算法则比这快的多,那么我们可不可以使用两者的结合呢? 非对称加密+对称加密 HTTPS真正采用的是这种加密方式。 大致的过程就是使用非对称加密的方式传送密钥,那么该密钥就是双方就安全的得到了

C# 网络加密与解密

天涯浪子 提交于 2019-12-01 13:20:29
     数据在网络传输过程中的保密性是网络安全中重点要考虑的问题之一。由于通过网络传递数据是在不安全的信道上进行传输的,因此通信双方要想确保任何可能正在侦听的人无法理解通信的内容,而且希望确保接收方接收的信息没有在传输期间被任何人修改,最好的办法就是在传输数据前对数据进行加密,接收方接收到加密的数据后再进行解密处理,从而保证数据的安全性。   在.NET 库的System.Security.Cryptography 命名空间中,包含多种加密数据的类,涉及多种加密算法。加密方法主要分为两大类:对称加密和不对称加密。 1 对称加密   对称加密也称为私钥加密,采用私钥算法,加密和解密数据使用同一个密钥。由于具有密钥的任意一方都可以使用该密钥解密数据,因此必须保证该密钥不能被攻击者获取,否则就失去了加密的意义。   私钥算法以块为单位加密数据,一次加密一个数据块。因此对称加密支持数据流,是加密流数据的理想方式。   .NET 类库使用的私钥算法有RC2、DES、TripleDES 和Rijndael。这些算法通过加密将n字节的输入块转换为加密字节的输出块。如果要加密或解密字节序列,必须逐块进行。由于n很小(对于RC2、DES 和TripleDES 算法,n 的值为8 字节、16 字节或24 字节,默认值为16字节;对于Rijndael 算法,n 的值为32 字节)

【网络安全】加解密算法最详解

扶醉桌前 提交于 2019-12-01 11:37:42
数据签名、加密是前后端开发经常需要使用到的技术,应用场景包括不限于用户登入、数据交易、信息通讯等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的 签名加密算法来达到业务目标。常用的加密算法有: 对称加密算法; 非对称加密算法; 哈希算法,加盐哈希算法(单向加密); 数字签名。 使用加密签名算法,可以达到下面的安全目标: 保密性:防止用户的数据被读取; 数据完整性:防止数据被篡改; 身份验证:确保数据发自特定的一方。 对称加密 对称加密算法加密和解密时使用同一把秘钥。操作比较简单,加密速度快,秘钥简单。经常在消息发送方需要加密大量数据时使用。缺点是风险都在这个秘钥上面,一旦被窃取,信息会暴露。所以安全级别不够高。常用对称加密算法有DES,3DES,AES等。在jdk中也都有封装。 DES DES的秘钥为8个字节,64个bit位。(不适应当今分布式开放网络对数据加密安全性的要求)在Java进行DES、3DES和AES三种对称加密算法时,常采用的是NoPadding(不填充)、Zeros填充(0填充)、PKCS5Padding填充。 一个DES的列子: import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import

加密类型、数据加密解密过程以及CA创建

岁酱吖の 提交于 2019-12-01 10:25:01
对称加密算法 1 对称加密:加密和解密使用同一个密钥 2 DES:Data Encryption Standard,56bits 3 3DES: 4 AES:Advanced (128, 192, 256bits) 5 Blowfish,Twofish 6 IDEA,RC6,CAST5 7 特性: 8 1、加密、解密使用同一个密钥,效率高 9 2、将原始数据分割成固定大小的块,逐个进行加密 10 缺陷: 11 1、密钥过多 12 2、密钥分发 13 3、数据来源无法确认 非对称加密算法 1 公钥加密:密钥是成对出现 2 公钥:公开给所有人;public key 3 私钥:自己留存,必须保证其私密性;secret key 4 特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然 5 功能: 6 数字签名:主要在于让接收方确认发送方身份 7 对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方 8 数据加密:适合加密较小数据 9 缺点:密钥长,加密解密效率低下 10 算法: 11 RSA(加密,数字签名) 12 DSA(数字签名) 13 ELGamal 单向散列(hash算法) 1 将任意数据缩小成固定大小的“指纹” 2 任意长度输入 3 固定长度输出 4 若修改数据,指纹也会改变(“不会产生冲突”) 5 无法从指纹中重新生成数据(“单向”) 6 功能:数据完整性 7