关于cryptopp加密库RSA加密算法的简单应用

Cryptopp 库是一个免费的C++加密方案类库,支持多种加密算法,如RSA、AES、MD5、BASE64等。最近的项目中需要应用RSA加密,所以研究了下这方面的应用。

cryptopp在github上的地址为https://github.com/weidai11/cryptopp,自带的实例程序非常的全面,包含了所有加密算法的示例,在windows平台可以直接用vs打开编译,无需加载其他第三方库。

cryptopp中的rsa加密,在示例程序cryptest工程中可以找到,对应的方法分别是:GenerateRSAKey(生成公私钥文件)、RSAEncryptString(以公钥文件加密)、RSADecryptString(以私钥文件解密)。其中公私钥还可以以以字符串的形式直接加载,区别在于使用的使用的钥匙源不同,文件钥匙类为FileSource,字符串钥匙类为StringSource。

RSA的钥匙还分为了16进制bigint类型数据和base64类型数据,在生成或者加载钥匙时,使用不同的解析类来区分不同的钥匙类型,16进制型钥匙解析类为HexDecoder、HexEncoder,base64型钥匙解析类为Base64Decoder、Base64Encoder。

客户端使用RSA加密通常要跟服务器端进行交互,服务器端多为java、.net等编写,在java和.net语言中的RSA加密算法通常使用的是PKCS标准进行加密解密,而cryptopp的实例程序中使用的是SHA1标准,所以如果要跟java的RSA加密算法可以互相解密密文,则cryptopp中也需要以PKCS标准进行加密解密,具体方法是将RSAES_OAEP_SHA_Decryptor/RSAES_OAEP_SHA_Encryptor替换为RSAES_PKCS1v15_Decryptor/RSAES_PKCS1v15_Encryptor

你可能感兴趣的:(关于cryptopp加密库RSA加密算法的简单应用)