分类目录归档:互联网金融

OpenSSL编程-Python实现公钥RSAPublicKey格式与大数字符串转换

在我们的项目开发和运维过程中,经常会遇到公钥的RSAPublicKey格式数据与BIGNUM大数字符串格式数据的转换,python的rsa模块提供这方面很便捷的转换,记录一下这两个格式之间的转换函数。

[阅读全文...]

OpenSSL编程-非对称加密及RSA简介

一. 对称与非对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。对于加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题。常用的对称加密算法有:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES算法等 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密 […]

[阅读全文...]

OpenSSL编程-3DES编程详解

一. 3DES加密原理 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。 3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),加密算法,其具体实现如下:设Ek()和Dk()代 […]

[阅读全文...]

OpenSSL编程-DES编程详解

一. DES加密原理 DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的第8位作为奇偶校验位),产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 轮循环,使用异或,置换,代换,移位操作四种基本运算。 二. DES API 1. 基本数据结构 2. 基本宏定义 3. 设置密钥函数 4. DES ECB模式加解密API 5. DES CBC模式加解密 […]

[阅读全文...]

OpenSSL编程-对称加密及DES/3DES简介

一. 对称加密算法 对称加密算法使用一个密钥,对给定的明文进行加密,产生密文与原明文大致相同,同时使用此密钥对所产生密文进行解密。主要分为四种加密模式: 1. 电子密码本模式 Electronic Code Book (ECB),将加密的数据分成若干组,每组大小跟加密密钥长度相同,然后分别对每组都用相同的密钥进行加密。其缺点是明文中存在重复的数据块,产生的密文也会重复,所以只能用于小块数据加密。 2. 加密块链模式 Cipher Block Chaining (CBC),将明文分成固定长度的块,然后将前面一个加密块输出的密文与下一个要加密的明文块进行异或操作,将计算结果再用 […]

[阅读全文...]