手头有个 Java 版的 DES 加密/解密程序,最近想着将其 Python 重构下,方便后续脚本解析,捣鼓了两下 pyDes 貌似很方便,不过据网上其他同学测试说 PyCrypto 性能要比 pyDes IV = "test__IV" #偏转向量 # 使用DES对称加密算法的CBC模式加密 k = des(KEY, CBC, IV, pad=None, padmode=PAD_PKCS5) d SunboyL/p/pyDes.html [2] Cryptography and Python http://lenciel.cn/2013/07/cryptography-and-python/ [3] 加密解密工具类 implementing DES-X (mode CBC) using PyCrypto https://gist.github.com/doublereedkurt/3921909 [5] python 对字符串的加密解密 p=1903 [6] 数据加密算法 http://baike.baidu.com/view/878529.htm [7] 非对称加密算法 http://baike.baidu.com/view/1490349
.NET提供了一组类型来实现对称加密和解密。这些类型拥有共同的基类SymmetricAlgorithm,如图所示。 ? 为了解决这个问题,就引入了IV,在使用它以后,加密之后即使是重复的也被打乱了。 对于特定算法,密钥和IV的值可以随意指定,但长度是固定的,通常密钥为128位或196位,IV为64位。 3.1 如果是加密,在provider上调用CreateEncryptor()方法,创建一个ICryptoTransform类型的加密器对象; 3.2 如果是解密,在provider上调用CreateDecryptor 下面是一个用于对称加密和解密的SymmetricCryptoHelper帮助类: // 对称加密帮助类 public class SymmetricCryptoHelper { private ICryptoTransform encryptor; // 加密器对象 private ICryptoTransform decryptor; // 解密器对象 private const int BufferSize =
代金券、腾讯视频VIP、QQ音乐VIP、QB、公仔等奖励等你来拿!
本文实例讲述了PHP实现的简单对称加密与解密方法。 分享给大家供大家参考,具体如下: 方法一:YII自带的加密方法 /** 加密 @var string [要加密的值] */ $secretKey = "wwj"; $data = $res['u_id' mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))); } 方法四: /** 简单对称加密 @param string $string [需要加密的字符串] @param string $skey [加密的key] @return [type] [加密后] */ function encode return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr)); } /** 简单对称解密
从数学角度理解 以一个具体例子来说明有助于真正理解对称加密这概念。 非对称加密 非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。 非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。 比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。 总结 (1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。 (2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。 (3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。
对称加密与非对称加密 在数字加密算法中,可划分为对称加密和非对称加密。 对称加密 对称加密算法中对于数据的加密与解密使用同一密钥,即使用相同的密码对内容进行加密解密。 非对称加密算法需要两个密钥:公开密钥和私有密钥,私钥不能被其他任何人知道,公钥则可以随意公开。 对于数据他们可以相互加解密,公钥对数据进行加密,只有用对应的私钥才能解密;私钥对数据进行加密,只有用对应的公钥才能解密。公钥加密,私钥解密;私钥数字签名,公钥验证。 对于公钥加密的内容,只有私钥能够解开,只要自己的私钥没有泄漏,那么数据传输就是安全的,其他人截获了密文也无法解密其中内容。 优点 安全性更高,保护通信安全方面有着绝对优势 缺点 加解密速度要远远慢于对称加密,加密算法极其复杂,安全性依赖算法与密钥 常用算法 RSA:是目前最有影响力和最常用的非对称加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击
对称加密和非对称加密 1.什么是对称加密,非对称加密 对称加密是指加解密使用的是同样的密钥 非对称加密是指加解密使用的密钥不同。 2.对称加密的优缺点 对称加密的特点是简单快速。 密钥越大,加密越强,但加解密过程越慢。 密钥容易被黑客拦截 3.非对称加密的优缺点 非对称加密使用了一对密钥,公钥和私钥。私钥由解密方安全保管,公钥可以发给任何请求它的人。数据使用公钥加密,私钥解密。 因为私钥不通过网络发送出去,所以非对称加密的安全性很高。 非对称加密很安全,但和对称加密比起来,非常慢。 4.对称密钥使用非对称方式发送 对称密钥使用非对称方式发送,解决了对称密钥易被获取,和非对称密钥加解密慢的问题。 使用步骤如下: 1)A生成一个随机数作为对称密钥 2)A向B申请公钥 3)B将公钥发给A 4)A使用公钥加密对称密钥,将加密后的结果发给B 5)B使用私钥解密出对称密钥 6)A和B可以通过对称密钥对信息加解密了
首先,简要介绍一下加密技术。即将明文加密为密文,并通过通信路径发送,中途窃听者不会阅读或理解课文。在接收端接收时,密文被解密为明文。 加密算法一般可以分为两种:一种是对称加密,另一种是非对称加密。 1.对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。 秘钥管理负担大 优点: 算法公开、计算量小、加密速度快、加密效率高 2.非对称加密 对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥( public key,简称公钥)和私有密钥(private key,简称私钥) 非对称加密解决了对称加密过程中秘钥容易被破解的问题。 非对称加密不采用对称加密中大家都用相同秘钥的方法,而是每个人独立的生成“公钥-私钥”对,使用私钥加密的信息,只能由该私钥对应的公钥才能解密,同理,使用公钥加密的信息,只能由该公钥对应的私钥才能解密。
2.保密性,第三方无法解密。 3.可认证性,消息的接收方可以确定消息是谁发送的。 对称加密 双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密。 优点:速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。 缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。 其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘 钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。 在非对称加密算法中常用的算法有: RSA等 缺点:速度较慢 优点:安全 java中使用rsa加密解密: import java.io.FileInputStream; import java.io.FileOutputStream 混合使用(非对称加密+数字签名) 首先接收方和发送方都有一对秘钥。 发送方: 1.对消息进行md5等摘要运算,得到消息摘要。 2.使用发送方私钥对消息摘要进行加密,该过程也称作签名。
(一)对称加密(Symmetric Cryptography) 对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key) 对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。 对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。 (7) Alice与银行可以使用对称密钥来对沟通的内容进行加密与解密了。 (三)总结 (1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。 (2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。 (3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。
三、什么是对称加密 前言讲的故事就是一个对称式加密,小明和小红都知道第一次约会的日期。所以传统的对称式加密需要通讯双方都保存同一份密钥,通过这份密钥进行加密和解密。所以非对称加密也称为单密钥加密。 对称加密的优势在于加解密速度快,但是安全性较低,密钥一旦泄露,所有的加密信息都会被破解。同时密钥的传输和保密也成为难题。为了解决密钥传输的问题,出现通过密钥交换建立共享密钥的技术。 四、什么是非对称加密 在对称加密中,加密和解密使用的是同一份密钥。所以,在非对称加密中,加密和解密使用的是不同的密钥。非对称加密中的密钥分为公钥和私钥。 公钥顾名思义就是公开的,任何人都可以通过公钥进行信息加密,但是只有用户私钥的人才能完成信息解密。非对称加密带来了一个好处,避免了对称式加密需要传输和保存同一份密钥的痛苦。 4.3 RSA加密过程 维基百科是这么解释的:RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中被广泛使用。
概述 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。 在对称加密算法中,DES算法最具有代表性,DESede是DES算法的变种,AES算法则作为DES算法的替代者。 String content = "对称加密算法"; //加密 System.out.println(desEncrypt(content, key) TESXcV0YxC4ArDlFR1Mor", key));//对称加密算法 } } DESede DESede是由DES改进后的一种对称加密算法,针对其密钥长度偏短和迭代次数偏少等问题做了相应改进 TESXcV0YxC4ArDlFR1Mor", key));//对称加密算法 } } AES AES(Advanced Encryption Standard),即高级加密标准,在密码学中又称Rijndael
对称加密 加密 encryption 与解密 decryption 使用的是同样的密钥 secret key,对称加密是最快速、最简单的一种加密方式。 非对称加密 非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(简称公钥)和私有密钥(简称私钥),即常说的“公钥加密,私钥加密”或“私钥加密,公钥加密”。 非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。 For Example RSA 就是最常用的非对称加密算法。 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。
概述 非对称加密算法与对称加密算法的主要差别在于非对称加密算法用于加密和解密的密钥不相同,非对称加密算法密钥分为公钥和私钥,公钥加密只能用私钥解密,反之私钥加密只能用公钥解密。 相比对称加密算法,非对称加密算法加/解密效率低,但安全性高,这两种算法一般结合使用。常见非对称加密算法有RSA、ECC、Elgamal等。 使用RSA实现加密解密 公钥加密,私钥解密。 static void main(String[] args) throws Exception { String content = "大王叫我来巡山呐"; //生成密钥对 ); System.out.println("私钥加密:" + privateKeyData); System.out.println("公钥解密:" + rsaDecrypt (keyMap.get(KEY_TYPE_PUBLIC_KEY), privateKeyData, KEY_TYPE_PUBLIC_KEY)); //公钥加密,私钥解密
在了解对称加密和非对称加密的区别之前我们先了解一下它们的定义: 对称加密(Symmetric Cryptography),又称私钥加密 对称加密是最快速、最简单的一种加密方式,加密(encryption 相对于“对称加密算法”这种方法也叫做“非对称加密算法”。非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。 公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。 非对称密钥加密的使用过程: 1. A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。 2. (2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。 (3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。
这次的.NET加密解析系列中,前面已经讲解了散列加密、对称加密、数字签名三种加密方式,在这篇博文种,将会主要讲解非对称加密的原理,以及非对称加密在.NET种的应用。 一.非对称加密概述: 前面讲解过对称加密,对称加密中加密和解密的密钥是相同的,但是正因为如此,这会给协商过程带来潜在的危险。所以产生了非对称加密方式。 对于非对称加密的原理有如下图: ? 以上是大致说明了消息利用非对称加密和解密的方式,解析来我们再来看一下如果生成密钥对。 2.非对称加密特点概述: 非对称加密算法中,采用加密函数和解密函数,加密函数只能加密函数,解密函数只能解密函数。加密函数的单向性意味着一个发送者创建的消息不能被另一个发送者阅读。 非对称加密相对于对称加密来说,非对称加密的速度非常慢,而且不适用于加密大量数据,公钥加密(非对称加密)是用来为对称加密算法解决密钥协商的问题而产生的。
对称加密与非对称加密 首先我们先来说一下到底什么是对称加密,什么是非对称加密,这一节主要是用一些例子来介绍一下对称加密和非对称加密是什么,如果你已经了解了,可以跳过本节。 类似于上面这种,在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥的加密方式就是对称密钥加密(Symmetric-key algorithm),简称对称加密。 常见的对称加密算法有:AES、DES、3DES 所以你可以将对称加密简单理解为:一方通过密钥将信息加密后,把密文传给另一方,另一方通过这个相同的密钥将密文解密,转换成可以理解的明文。 这里提一点:签名 ≠ 加密,通俗点说加密就是你哪怕看到了不该看到的东西,也理解不了。而签名就是你做了任何事,都抵赖不了。 为什么非对称加密比对称加密慢? 这么看,非对称加密虽然效率低下,但是存储成本低且相对安全,这也就解释了为什么非对称加密应用如此广泛了。 HTTPS 既然无法做到既安全又快速的加解密,那我们在实际使用时只能尽量达到一个动态的平衡。
非对称加密的类型之间的关系如图所示。 ? 加密模式 加密模式只有一种实现,即RSACryptoServiceProvider,采用的是RSA算法。 不管是对称加密还是非对称加密,密钥都是关键。 在对称加密中,密钥可以是开发者自行设定的字符串。 对于非对称加密来说,根据算法的不同密钥的格式也不相同,并且会复杂很多。 在发送方发送消息前,使用接收方的公钥进行加密; 在接收方收到消息后,使用私钥进行解密。 VerifyData()用于重新运算消息,得出本地摘要,并解密传递进来的原始摘要,最后对本地摘要和原始摘要进行对比,并返回bool型的结果。 全文回顾: 非对称加密的类型之间的关系 加密模式 自动创建一个公/私密钥对 数字签名
final String ENCODING = "UTF-8"; private static final String KEY_ALGORITHM = "AES"; /** * 加解密算法 /** * KEY */ private static final String KEY="f499f517f8243226"; /** * 加密字符串 content:{},password:{}", content, password, e); } return null; } /** * 解密 * * @param content 解密前的字符 * @return * @throws Exception * @author cdduqiang hs = hs + stmp; } } return hs.toUpperCase(); } /** * 解密秘钥
腾讯云加密机是基于国密局认证的物理加密机,利用虚拟化技术,提供弹性,高可用,高性能的数据加解密,密钥管理等云上数据安全服务。
扫码关注云+社区
领取腾讯云代金券