分类
如何在外汇市场上交易

在Cryptobo上使用Pinbars进行价格行动交易

这里的block_size以及key_size我也找到了源代码

pycryptodome简介——python实现RSA数字签名的产生和验证(一)

小兰同学 于 2020-05-06 10:51:58 在Cryptobo上使用Pinbars进行价格行动交易 发布 6018 收藏 在Cryptobo上使用Pinbars进行价格行动交易 51

关于pycryptodome的安装,直接pip install pycryptodome,不行的话请参考:pip install pycryptodome失败的解决办法

pycryptodome的前身

Crypto为UNIX和Linux平台上的一个或多个文件提供了到对称GPG(GNU隐私保护Gnu Privacy Guard)加密和解密的简单接口。它运行在GPG之上,需要在系统上安装GPG。使用AES256密码算法进行加密。

pycrypto(Python Cryptography Toolkit)是安全哈希函数(如sha256和ripemd160)和各种加密算法(aes、des、rsa、elgamal等)的集合。它是一个第三方库,但是已经停止更新三年了,所以不建议安装这个库。

pycryptodome是一个独立的包含低级密码原语的python包。它是pycrypto的延伸版本,用法和pycrypto 是一模一样的;建议开发者使用 PyCryptodome 或者 cryptography。

pycryptodome的使用

pycrytodome模块不是Python的内置模块,pycryptodome模块是一个实现了各种算法和协议的加密模块的结合,提供了各种加密方式对应的多种加密算法的实现,包括 单向加密、对称加密以及公钥加密和随机数操作。hashlib和hmac虽然是Python的内置模块,但是它们只提供了单向加密相关算法的实现,如果要使用对称加密算法(如, DES,AES等)或者公钥加密算法我们通常都是使用pycrytodome这个第三方模块来实现。存在以下几个子包:

一、对称加密(以AES为例)

1.Crypto.Random

在这里插入图片描述

一般用于产生随机密钥,当然也可以使用Python内置的random模块产生,random模块的介绍前面的文章已经提过:python暴力破解加密的压缩文件(一)
这里测试一下Crypto.Random的用法:

可以看到,输出了一串字节串,所以该模块即可用于初始密钥的生成

2.Crypto.Cipher

在这里插入图片描述


关于这里的密钥为什么是16位,因为"AES key must be either 16, 24, or 32 bytes long",至于明文为什么是16的倍数,请自行学习对称加密的相关内容。

3.Crypto.Util

在这里插入图片描述

这里的block_size以及key_size我也找到了源代码

二、公钥加密(以RSA为例)

1.Crypto.PublicKey.RSA生成私公密钥对

在这里插入图片描述

在该模块下的RSA.py源代码中提供了直接生成原始密钥的函数,而AES并没有这样的函数,所以要使用Crypto.Random模块生成:
为什么是私公不是公私呢?继续走:

测试样例:

输出:

显然,用generate函数生成的密钥是一个私钥对象,通过export_key()函数返回这个密钥:

那么公钥的生成就需要下面这个函数:

这些函数除generate外,都是定义在Crypto.PublicKey.RSA下的主类
里面的,大家可以参考源代码。

2.RSA.import_key获得公私密钥

会报出属性错误:

为什么呢,我们 print(public_key) :

接着 print(publicKey) :

这里我猜测是因为publicKey是一个公钥的实例化对象,即public_key的实例化对象,在使用PKCS1_OAEP实例化加密套件时传入的参数必须是这个对象,查阅PKCS1_OAEP.py的源代码也发现传入的参数key应该是一个对象:

3.RSA加密

在这里插入图片描述

输出:

RSA加密完成!!

4.RSA解密

在这里插入图片描述

输出:

RSA解密完成!!!

三、数字签名与验签

1.Crypto.Hash获取消息的HASH值

2.Crypto.Signature对HASH值使用私钥进行签名

本质上是使用私钥对HASH值进行加密,为了方便我把公钥私钥以及消息分别保存在public_key.pem、private_key.pem、data.txt三个文件中,这里有坑了哦!
坑一:别忘了获取公私钥要用import_key函数;
坑二:从data.txt中读取消息后要使用相应的编码格式,于是上步就变成了: digest = MD5.new(data.encode('utf-8'))
好了,在Crypto.Signature中随便选择一个模式,这里我选择pkcs1_15模式对消息就行签名,示例:

Crypto++编译使用

wishfly 于 2019-03-06 17:19:24 发布 667 收藏 1

  1. 右键“属性”,选择“配置属性”-> C/C++ ->常规,附加包含目录 E:\Crypto++5.6.3
  2. 右键“属性”,选择“配置属性”-> 链接器 ->常规,附加库目录 E:\Crypto++5.6.3\Win32\Output\Debug
  3. 右键“属性”,选择“配置属性”-> C/C++ -> 代码生成,运行库选择“多线程调试(/MTd)”在Cryptobo上使用Pinbars进行价格行动交易 (Release模式下对应“多线程(/MT)”)。

此时,使用Crypto++的开发环境就搭建好了,在Crypto++ User Guide中的例子。

AES加解密

Crypto++库是一个用c++ 编写的密码类库,是一个自由软件。有关它的信息可以访问以下两个网站:Crypto++® Library Wiki-Crypto++® Library简述 下载 使用 AES加解密 效果 源码 更多参考下载进入Crypto++主页,下载对应的版本(我下载的是最新的:Crypto++ 5.6.3)解压缩之后,我们会看到里面.

04-26 737

安装与使用 Crypto 算法库在 python 中最初叫 pycrypto,这个作者有点懒,好几年没有更新,后来就有大佬写了个替代库 pycryptodome。这个库目前只支持 python3,安装也很简单pip install pycryptodome就行了!详细的用法可以看看 官方文档 常见对称密码在 Crypto.Cipher 库下,主要有:DES 3DES AES RC4 Salsa20.

12-14 889

这几天需要在安卓上使用crypto++库,编译搞了半天,官方文档看起来贼费劲。。 我在centos7上编译的,请确保你的机器有GLIBC_2.14版本的库,详见后续问题点。 首先根据下面的文档装好ndk和设置环境变量: https://www.cryptopp.com/wiki/Android_Setup_(Command_Line) 在Cryptobo上使用Pinbars进行价格行动交易 步骤: 一:下载ndk并解压到 /opt .

本套视频教程介绍加密解密相关的常见算法,指出每种算法的应用场景,并给出使用示例。具体包含: (1) 数据转换(HEX和base64) (2) 对称加密 (DES, 3DES, AES) (3) 校验 CRC, MD5摘要, SHA1摘要 (4) 数字签名(HMAC-SHA1) , 并介绍了crypto++这个算法库的使用方法。

11-16 407