




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Crypto+入门- 安装Crypto+是一个C+编写的密码学类库。读过过河卒的朋友还记得作者的那个不愿意去微软工作的儿子吗,就是Crypto+的作者Wei Dai。Crypto+是一个非常强大的密码学库,在密码学界很受欢迎,最初还是Rivest(RSA的R)门下的一个博士姐姐把这个库介绍给我的。虽然网络上可以找到很多密码学相关的代码和库,但是Crypto+有其明显的优点。主要是功能全,统一性好。例如椭圆曲线加密算法和AES在OpenSSL的crypto库中就还没最终完成,而在Crypto+中就支持的比较好。基本上密码学中需要的主要功能都可以在里面找得到。Crypto+是由标准的C+写成的,学习C+、密码学、网络安全都可以通过阅读Crypto+的源代码得到启发和提高。Crypto+的安装首先到上下载最新版本的源代码,如果是windows版的,会得到一个VC的项目,直接用VC打开就可以编译了。这里建议大家使用最新版的C+编译器,因为诸如VC6的编译器是不支持C+的标准的,很多符合C+标准的代码不能编译通过。编译的时间比较长,完成后会生成cryptlib.lib这个库文件。可以将Crypto+源文件的目录命名为cryptopp,拷贝到编译器的include目录(例如:C:VS.NETVC7include),将cryptlib.lib文件拷贝到编译器的lib目录。这样我们只需要说明链接cryptlib.lib即可。例如在VC7中在项目-属性-链接器-命令行-附加选项中添加“cryptlib.lib”。Hello World现在写一个hello world程序看看能不能编译通过。#include using namespace std;#include using namespace CryptoPP;int main() cout hello crypto+ endl; cout Aes block size is AES:BLOCKSIZE endl; return 0; 编译运行,一切OK,哈哈:D,可以用了。 lib和dll文件的区别和联系 .dll是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll还有其他的文件格式如.ocx等,所有的.dll文件都是可执行。 .lib是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的lib文件在那里。一般来说,与动态连接文件相对比,lib文件也被称为是静态连接库。当你把代码编译成这几种格式的文件时,在以后他们就不可能再被更改。如果你想使用lib文件,就必须: 1 包含一个对应的头文件告知编译器lib文件里面的具体内容 2 设置lib文件允许编译器去查找已经编译好的二进制代码 如果你想从你的代码分离一个dll文件出来代替静态连接库,仍然需要一个lib文件。这个lib文件将被连接到程序告诉操作系统在运行的时候你想用到什么dll文件,一般情况下,lib文件里有相应的dll文件的名字和一个指明dll输出函数入口的顺序表。如果不想用lib文件或者是没有lib文件,可以用WIN32 API函数LoadLibrary、GetProcAddress。事实上,我们可以在Visual C+ IDE中以二进制形式打开lib文件,大多情况下会看到ASCII码格式的C+函数或一些重载操作的函数名字。 一般我们最主要的关于lib文件的麻烦就是出现unresolved symble这类错误,这就是lib文件连接错误或者没有包含.c、.cpp文件到工程里,关键是如果在C+工程里用了C语言写的lib文件,就必需要这样包含: extern C #include myheader.h 这是因为C语言写的lib文件没有C+所必须的名字破坏,C函数不能被重载,因此连接器会出错 C语言中有一些函数不需要进行编译,有一些函数也可以在多个文件中使用。一般来说,这些函数都会执行一些标准任务,如数据库输入/输出操作或屏幕控制等。可以事先对这些函数进行编译,然后将它们放置在一些特殊的目标代码文件中,这些目标代码文件就称为库。库文件中的函数可以通过连接程序与应用程序进行连接。这样就不必在每次开发程序时都对这些通用的函数进行编译了。 不同类型的应用程序将会使用不同的函数库。例如:libdbm库中组包含了对数据库文件进行访问的dbm函数,需要对数据库进行操作的程序就会与该库进行连接。数学应用程序将使用数学库libm,X-Windows应用程序将使用Xlib库,libX11。另外,所有的程序都将使用标准的C函数库。libc,该库中包含了诸好内存管理或输入输出操作的基本函数,这些库都存放在/usr/lib这些系统公用的目录中,系统中的任何用户都可以利用这些库。当然用户也可以建立自己专用的库函数,供自己或其它指定的人员使用。 库可以有三种使用的形式:静态、共享和动态。静态库的代码在编译时就已连接到开发人员开发的应用程序中,而共享库只是在程序开始运行时才载入,在编译时,只是简单地指定需要使用的库函数。动态库则是共享库的另一种变化形式。动态库也是在程序运行时载入,但与共享库不同的是,使用的库函数不是在程序运行开始,而是在程序中的语句需要使用该函数时才载入。动态库可以在程序运行期间释放动态库所占用的内存,腾出空间供其它程序使用。由于共享库和动态库并没有在程序中包括库函数的内容,只是包含了对库函数的引用,因此代码的规模比较小。Crypto+库在VS 2005中的使用RSA加解密 一. 下载Crypto+ LibraryCrypto+ Library的官方网:/二. 建立自己使用的Crypto+ Library由于从官方网下载的Crypto+库是开源的,只有源文件和几个可以生成lib、dll的工程,以及一个使用的例子工程,因此希望生成自己建的工程能使用的SDK。1. 编译链接生成cryptlib.lib打开cryptest.sln,分别在Debug模式和Release模式下编译链接cryptlib工程,成功后会在cryptopp54Win32outputdebug和cryptopp54Win32outputrelease下生成cryptlib.lib文件。作者当时用的是Crypto+ 5.4版本。Build时方法是,右击Solution Explorer中的cryptlib工程,单击build。第一次时它会报错说“d:cryptopp54adler32.cpp(3) : fatal error C1033: cannot open program database d:cryptopp54win32cryptlibdebugvc80.idb”,没关系,按这样再build一次,就可以build成功了。2. 建立Crypto+ SDK在C:Program Files中新建文件夹,取名“CryptoPP”,里面新建文件夹“include”、“lib”,在“lib”中新建文件夹“debug”、“release”。将Crypto+库中的所有头文件复制到“include”文件夹中,再将上面生成的两个cryptlib.lib分别复制到“debug”和“release”中。三. RSA加解密1. 在VS 2005中新建Win32 Console Application工程,建立空的工程。完成后新建文件main.cpp,里面源码如下:#include randpool.h#include rsa.h#include hex.h#include files.h#include using namespace std;using namespace CryptoPP;#pragma comment(lib, cryptlib.lib)/-/ 函数声明/-void GenerateRSAKey(unsigned int keyLength, const char *privFilename, const char *pubFilename, const char *seed);string RSAEncryptString(const char *pubFilename, const char *seed, const char *message);string RSADecryptString(const char *privFilename, const char *ciphertext);RandomPool & GlobalRNG();/-/ 主程序/-void main() char priKey128 = 0; char pubKey128 = 0; char seed1024 = 0; / 生成 RSA 密钥对 strcpy(priKey, pri); / 生成的私钥文件 strcpy(pubKey, pub); / 生成的公钥文件 strcpy(seed, seed); GenerateRSAKey(1024, priKey, pubKey, seed); / RSA 加解密 char message1024 = 0; coutOrigin Text:tHello World!endlendl; strcpy(message, Hello World!); string encryptedText = RSAEncryptString(pubKey, seed, message); / RSA 加密 coutEncrypted Text:tencryptedTextendlendl; string decryptedText = RSADecryptString(priKey, encryptedText.c_str(); / RSA 解密 coutDecrypted Text:tdecryptedTextendlendl;/-/ 生成RSA密钥对/-void GenerateRSAKey(unsigned int keyLength, const char *privFilename, const char *pubFilename, const char *seed) RandomPool randPool; randPool.Put(byte *)seed, strlen(seed); RSAES_OAEP_SHA_Decryptor priv(randPool, keyLength); HexEncoder privFile(new FileSink(privFilename); priv.DEREncode(privFile); privFile.MessageEnd(); RSAES_OAEP_SHA_Encryptor pub(priv); HexEncoder pubFile(new FileSink(pubFilename); pub.DEREncode(pubFile); pubFile.MessageEnd();/-/ RSA加密/-string RSAEncryptString(const char *pubFilename, const char *seed, const char *message) FileSource pubFile(pubFilename, true, new HexDecoder); RSAES_OAEP_SHA_Encryptor pub(pubFile); RandomPool randPool; randPool.Put(byte *)seed, strlen(seed); string result; StringSource(message, true, new PK_EncryptorFilter(randPool, pub, new HexEncoder(new StringSink(result); return result;/-/ RSA解密/-string RSADecryptString(const char *privFilename, const char *ciphertext) FileSource privFile(privFilename, true, new HexDecoder); RSAES_OAEP_SHA_Decryptor priv(privFile); string result; StringSource(ciphertext, true, new HexDecoder(new PK_DecryptorFilter(GlobalRNG(), priv, new StringSink(result); return result;/-/ 定义全局的随机数池/-RandomPool & GlobalRNG() static RandomPool randomPool; return randomPool;2. 设置工程属性选择工程属性(Alt + F7):(1)“Configuration Properties”“C/C+” “General”,右边的“Additional Include Directories”设置为上面建好的Crypto+ SDK的Include文件夹,“C:Program FilesCyptoPPinclude”;(2) “Configuration Properties”“Linker” “General”,右边的“Additional Library Directories”设置为上面建好的Crypto+ SDK的LibDebug文件夹,“C:Program FilesCyptoPPlibdebug”(Release模式下对应着Release文件夹);(3) “Configuration Properties”“C/C+” “Code Generation”,右边的“Runtime Library”设置为“Multi-threaded Debug (/MTd)”(Release模式下对应着“Multi-threaded (/MT)”)3. 运行程序(Ctrl + F5)正常运行的输出结果为:Origin Text: Hello World!Encrypted Text: 79C72A482482EF45111F961772456310792AB735ECF72329ECB26292D2B26374824E0E35D24A63CB03B867DD2C70B001FD4B2B33FBC984BD229A5226F284B889901817976A6803229E8351372C5E28E8BEBA2A94E7CF61A8A162F0BA2F3E0C35D26842D92EC4866D25E6BF878743E48184D9F6FF9BA690F953568D017C02D540Decrypted Text: Hello World!如果上面的第(3)步没有设置则会出现以下链接错误:cryptlib.lib(randpool.obj) : error LNK2005: public: _thiscall std:basic_stringchar,struct std:char_traits,class std:allocator :basic_stringchar,struct std:char_traits,class std:allocator (char const *) (?0?$basic_stringDU?$char_traitsDstdV?$allocatorD2stdQAEPBDZ) already defined in msvcprtd.lib(MSVCP80D.dll)说在msvcprtd.lib和MSVCRTD.lib中已经定义过。Crypto+使用经验总结?Crypto+使用经验总结 Crypto+是一套关于应用密码学的类库,提供了散列(MD5、SHA)、数据加密(DES、AES)、数字签名(RSA、椭圆曲线签名算法ECDSA)等很多有用的算法,算法安全性已经通过 FIPS 140-2(/cryptval/140-2.htm) 验证。 ?下面是一些使用中的总结: ?一、将一个缓冲区编码1.首先声明一个字符串来存放编码的结果string str;2.接着声明一个编码器( HexEncoder 可替换为 Base64Encoder 等)对象,并通过 StringSink 类关联两者HexEncoder encoder(new StringSink(str);3.将数据放入编码器中byte buf1024;.encoder.Put(buf, sizeof(buf);SetDlgItemText(IDC_EDIT_TEST, spk.data();4.调用 MessageEnd 函数结束编码encoder.MessageEnd(); ?二、BufferedTransformation、BlockTransformation、StreamTransformation、HashTransformation这几个类都是对输入的缓冲区进行某种运算后输出,但是有一些差别1.BufferedTransformation:是对缓冲区进行某种变换,这种变换式可以还原的2.BlockTransformation:基本与 BufferedTransformation 相同,不同之处在于它是以块为单位3.StreamTransformation:与 BufferedTransformation 差不多相同,不同之处在于是以流式方式,如网络套结字4.HashTransformation:是对缓冲区计算哈希值,这种变换是不可还原的 ?三、Sink类及其派生类的作用Sink 类及其派生类,以下简称 Sink 类,它们的作用是在真实的数据和缓冲区变换类之间起一个连接的作用, Sink 类由 BufferedTransformation 派生,但是不能产生任何输入输出,所有对它的操作都是对它所指向的数据的操作。每个 Sink 类必须与一个正式的数据关联起来。1.ArraySink:操作字节数据2.StringSink:操作字符串数据3.ArrayXorSink:操作字节数据,但是会对缓冲区进行异或运算4.FileSink:操作文件 ?四、SecByteBlock 和 ByteQueue两个类都描述了一个字节为单位的缓冲区,所不同的是 SecByteBlock 所分配的缓冲区时连续的,而 ByteQueue 则是用链表实现的1.使用 SecBlock 类可以动态分配指定字节数的内容,并在类析构时自动释放,而且可以作为指定类的指针使用,有些方面类似于 auto_ptr ?五、椭圆曲线加密(ECIES)、签名(ECDSA)算法1.ECIES构造方法AutoSeededRandomPool rng;/ 随机数产生器ECIES:Decryptor cpriv(rng, ASN1:sect193r1();/ 私钥,自己保留ECIES:Encryptor cpub(cpriv);/ 公钥,提供给用户注意:椭圆曲线加密算法是拥有公钥的人将数据加密后,密文发送给自己,自己来解密,所以不适用于注册码的生成2.ECDSA以下描述一个自定义的椭圆曲线的构造过程(以GF(p)上的椭圆曲线为例),参数可从以下网址得到http:/www.cryptomathic.dk/labs/ellipticcurvedemo.html/ Integer modulus(199999999999999999999999980586675243082581144187569);/ a、b为椭圆曲线参数Integer a(659942,b7261b,249174,c86bd5,e2a65b,45fe07,37d110h);Integer b(3ece7d,09473d,666000,5baef5,d4e00e,30159d,2df49ah);/ 计算基点G的两个参数x、yInteger x(25dd61,4c0667,81abc0,fe6c84,fefaa3,858ca6,96d0e8h);Integer y(4e2477,05aab0,b3497f,d62b5e,78a531,446729,6c3fach);Integer r(100000000000000000000000000000000000000000000000151);Integer k(2);/ 私有密钥Integer d(76572944925670636209790912427415155085360939712345); ?/ 椭圆曲线ECP ec(modulus, a, b);/ P为基点GECP:Point P(x, y);/ 计算基点GP = ec.Multiply(k, P);/ Q为公开密钥ECP:Point Q(ec.Multiply(d, P);ECIES:Decryptor cpriv(ec, P, r, d);ECIES:Encryptor cpub(cpriv);ECDSA:Signer spriv(cpriv);ECDSA:Verifier spub(spriv);ECDH:Domain ecdhc(ec, P, r, k);ECMQV:Domain ecmqvc(ec, P, r, k);3.椭圆曲线上的点的阶(Order of point)椭圆曲线的签名的长度是由基点P的阶的长度决定的,和素数的长度无关。所以椭圆曲线可以选取素数较大的类型。4.椭圆曲线的密钥私钥是一个大数,而公钥则是一个点密码类库Crypto+ Library 5.1的研究与应用密码类库Crypto+? Library 5.1的研究与应用摘要引言在计算机被广泛应用的信息时代,信息本身就是时间,就是财富。大量信息用数据形式存放在计算机系统里。信息的传输则通过公共信道。这些计算机系统和公共信道是不设防的,是很脆弱的,容易受到攻击和破坏,信息的丢失不容易被发现,而且后果是极其严重。如何保护信息的安全已不仅仅是军事和政府部门感兴趣的问题,其他企事业单位也愈感迫切。因为在网络化的今天,计算机犯罪每年使他们遭受的损失极其巨大,而且还在发展中。密码是有效而且可行的保护信息安全的办法。随着计算机网络不断渗透到各个领域,密码学的应用也随着扩大。数字签名、身份鉴别、等都是由密码学派生出来的新技术和应用。目前开放源代码的加密库中,密码类库Crypto+是比较流行的,目前的最高版本为Crypto+? Library 5.1,它实现了各种公开密钥算法、对称加密算法、数字签名算法、信息摘要算法以及其相关的其它算法等等,Crypto+? Library 5.1几乎包括了目前所有安全算法库,对密码类库Crypto+? Library 5.1的研究与应用对计算机网络安全的研究与发展有重大的实际意义。(一)Crypto+? Library 5.1要求的密码知识Crypto+? Library 5.1要求什么样的密码知识基础呢,很多初学者都想知道这个问题。然而当你提出一个基础的问题在别处找到答案,你会发现这对你没有多大用处,因为越来越多熟练使用这个类库包的人不仅仅是考虑挑战安全问题。该密码库的建立是假设你对密码术语已经有一定的了解的基础上的,如果你已经达到这一点,你可以进行一些比较基础的研究,到那时你会发现即使在最有利的情况下建立一个安全体系也是很困难的。如果你可以克服这些困难去研究这方面知识,你可以从一些网站获得比较专业的帮助。Crypto+库包含有大量的算法,但是它们对用户来说并不总是显而易见的,下面推荐一些算法,因为这些算法不但用得很广,而且被公认比较安全的,并且是免费的。1、 分组密码:DES-EDE3, Blowfish, Rijndael2、 序列密码:3、 Hash函数:SHA14、 消息认证码: HMAC/SHA15、 公钥加密:RSA/OAEP/SHA16、 签名:RSA/PKCS1v15/SHA1, DSA, Generalized-DSA/SHA17、 密钥协议:DH8、 随机数产生器:RandomPool, AutoSeededRandomPool(二)密码类库Crypto+? Library 5.1的内容Crypto+ 库是一个用c+ 编写的密码类库,是一个自由软件。Crypto+? Library 5.1于2003年3月22日发布,是目前最高的版本,该版本加入了除了作者Wei Dai以外的另外一些作者的代码重新包装成类,类库里主要包含下列的内容:1、 用抽象类定义API类的继承层次2、 高级加密标准AES(Advanced Encryption Standard) Rijndael和AES候选算法:RC6, MARS, Twofish, Serpent, CAST-2561997年4月15日美国国家标准技术研究所NIST发起征集高级加密标准AES算法的活动,目的是为确定一个安全性能更好的分组密码算法用于取代DES,AES的基本要求是比三重DES快并且至少与DES一样安全,分组长度为128位,密钥长度为128位,192位或256位.2001年11月26日,NIST正式公布高级加密标准AES, AES的安全性能是良好的,经过多年来的分析和测试,至今没有发现AES的明显缺点,也没有找到明显的安全漏洞. AES能够抵抗目前已知的各种攻击方法的攻击。3、 对称分组密码:IDEA, DES, Triple-DES (DES-EDE2 and DES-EDE3), DESX (DES-XEX3), RC2, RC5, Blowfish, Diamond2, TEA, SAFER, 3-WAY, GOST, SHARK, CAST-128, Square, Skipjack。分组密码又称为秘密钥密码或对称密码。利用分组密码对明文进行加密时,首先需要对明文进行分组,每组的长度都相同,然后对每组明文分别加密得到等长的密文,分组密码的特点是加密密钥与解密密钥相同。分组密码的安全性应该主要依赖于密钥,而不依赖于对加密算法和解密算法的保密。因此,分组密码的加密和解密算法可以公开。4、 一般的密码模式:ECB, CBC, CBC ciphertext stealing (CTS), CFB, OFB, counter mode (CTR) 。电子密本(ECB), 密码分组链接(CBC),输出反馈(OFB)和密文反馈(CFB)5、 序列密码:Panama, ARC4, SEAL, WAKE, WAKE-OFB, BlumBlumShub 序列密码可以认为是起源于20世纪20年代的Vernam体系,当Vernam体制中的密钥序列是随机的(0,1)时,他就是“一次一密“密码体制。Shannon已经证明了“一次一密“密码体制在理论上是不可破译的。由于随机的密钥序列产生、存储以及分配等方面存在一定的困难,Vernam体制在当时并没有得到广泛的应用。随着微电子技术和数学理论的发展与完善,基于伪随机序列的序列密码得到了长足的发展和应用。在序列密码中,加密和解密所用的密钥都是伪随机序列,伪随机序列的产生比较容易并且有比较成熟的数学理论工具,目前,序列密码是 世界各国的军事和外交等领域中使用的主要密码体制之一。6、 公钥密码: RSA, DSA, ElGamal, Nyberg-Rueppel (NR), Rabin, Rabin-Williams (RW), LUC, LUCELG, DLIES (variants of DHAES), ESIGN在公钥密码体制中加秘密钥和解密密钥是不一样的,加密密钥可以公开传播而不危及密码体制的安全性。RSA公钥密码体制的安全性是基于大整数的素分解问题的难解性,7、公钥密码系统补丁:PKCS#1 v2.0, OAEP, PSSR, IEEE P1363 EMSA2 8、密钥协商方案:Diffie-Hellman (DH), Unified Diffie-Hellman (DH2), Menezes-Qu-Vanstone (MQV), LUCDIF, XTR-DH 9、椭圆曲线密码:ECDSA, ECNR, ECIES, ECDH, ECMQV9、 单向hash函数:hash函数是一种将一种任意长度的消息(message)压缩为某一固定长度的消息摘要(message digest)的函数。hash函数可以用于数字签名和消息的完整性检测。SHA-1,:安全hash算法SHA MD2, MD4, MD5, HAVAL, RIPEMD-160, Tiger, SHA-2 (SHA-256, SHA-384, and SHA-512), Panama11、消息认证码(MAC):MD5-MAC, HMAC, XOR-MAC, CBC-MAC, DMAC12、基于密码结构的Hash函数:Luby-Rackoff, MDC13、伪随机数发生器(PRNG): ANSI X9.17 appendix C, PGPs RandPool14、password based key derivation functions:PBKDF1 and PBKDF2 from PKCS #515、压缩和解压算法16、大整数和多项式快速精确算法17、有限范围内的算法包括GF(p) 和 GF(2n)18、素数的产生和验证等等。(三)密码类库Crypto+? Library 5.1的开发过程Crypto+密码类库自从发布以来,作为一个自由软件,得到广大开发者的支持,吸收了很多优秀的算法和原代码,一直在不断的在完善和扩大,适应了各种常用的操作系统和编译平台。(四)密码类库Crypto+? Library 5.1的编译平台Crypto+? Library 5.1 支持多种操作系统和各种各样的编译平台,但是对于有些操作系统下的一些编译平台要添加一定的补丁,下面我们就把一些常用的操作系统和编译平台的编译情况列出来如下:开发环境 操作系统 编译Crypto+ 4.2 编译Crypto+ 5.0 编译Crypto+ 5.1 MSVC 6.0 SP5 WIN32 可直接编译 可直接编译 MSVC .NET 2002 WIN32 可直接编译 MSVC .NET 2003 WIN32 没有测试 要有效的补丁 Borland C+Builder 6 WIN32 没有测试 GCC 2.95.2 UNIX/WIN32/BeOS/MSDOS(DJGPP2.03) 可直接编译 GCC 3.2 UNIX/WIN32/BeOS 要有效的补丁 可直接编译 Apple GCC 932.1 (2.95.2) MacOS X (Darwin) 要有效的补丁 要有效的补丁 可直接编译 Apple GCC 1161 (3.1) 没有测试 CodeWarrior Pro 6.1 MacOS/WIN32 需要有效的工程文件可直接编译 没有测试 CodeWarrior Pro 8.2 没有测试 需要有效的工程文件 Sun WorkShop 6, Forte C+ Solaris 没有测试 没有测试 (五)密码类库Crypto+? Library 5.1的类库分析密码库是用了高层的c+特征,如模板,多重继承和异常等一流的强有力的工具来实现各种各样错综复杂的密码算法For people who are familiar with C+, the library will appear intuitive and easy to use. Others may need to view it as a learning opportunity. If you are a C+ beginner and you are under a very tight schedule, or if you are afraid of the more advanced features of C+, this library may not be for you. Having said that, you are invited to see for yourself how easy or hard it is to use by looking at some of the other answers in this category. 对熟悉c+的用户来说很容易用,下载:Where is the tutorial?Where is the reference manual?Is there anyone I could pay to help me with this?How am I going to use Crypto+ if I dont have a clue about cryptography?Recommended AlgorithmsThere is nothing the more experienced people that use this library like more than a challenging security question to mull over. However, you may find you dont get much help if you ask a basic question with an answer that is well-documented elsewhere. The library assumes you know in cryptographic terms what you want to achieve. Until you reach that point, perhaps you should do some background research? You should also know that building secure systems is difficult at the best of times. If you can afford it, you can get some professional help: Is there anyone I could pay to help me with this? The good news is that there is a decent body of literature to help you. A list of recommended cryptography books is available at . A lot of good crypto information is also available on the web. See for a list of recommended sites. Crypto+ contains a large number of algorithms, and it may not always be obvious which ones to use. The algorithms given below are recommended because they are widely used and generally considered to be secure and patent-free. block cipher: DES-EDE3, Blowfish, Rijndaelstream cipher: MARC4 (ARC4 with first 256 bytes of keystream discarded), any of the above block ciphers in CTR modehash function: SHA1message authentication code: HMAC/SHA1public key encryption: RSA/OAEP/SHA1signature: RSA/PKCS1v15/SHA1, DSA, Generalized-DSA/SHA1key agreement: DHrandom number generator: RandomPool, AutoSeededRandomPool 10、 Crypto+ Library is a free C+ class library of cryptographic schemes. Currently the library consists of the following, some of which are other peoples code, repackaged into classes. ?a class hierarchy with an API defined by abstract base classes ?AES (Rijndael) and AES candidates: RC6, MARS, Twofish, Serpent, CAST-256 ?other symmetric block ciphers: IDEA, DES, Triple-DES (DES-EDE2 and DES-EDE3), DESX (DES-XEX3), RC2, RC5, Blowfish, Diamond2, TEA, SAFER, 3-WAY, GOST, SHARK, CAST-128, Square, Skipjack ?generic cipher modes: ECB, CBC, CBC ciphertext stealing (CTS), CFB, OFB, counter mode (CTR) ?stream ciphers: Panama, ARC4, SEAL, WAKE, WAKE-OFB, BlumBlumShub ?public
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030功能性食品配方创新与监管合规策略报告
- 2025-2030分布式能源存储系统在微电网中的应用与发展趋势分析报告
- 2025-2030共享经济模式创新与可持续发展投资战略研究报告
- 2025-2030共享经济商业模式创新与投资价值评估报告
- 2025年急诊医学创伤抢救模拟试题答案及解析
- 2025年工业互联网平台数字签名技术规范与工业互联网平台产业合作机会报告
- 2025年新能源行业安全管理信息化建设与技术创新报告
- 2025年地热能在农业温室大棚中的能源供应模式报告
- 2025年新能源汽车轻量化材料技术创新与应用研究报告
- 2026年中国新能源汽车产业技术创新与产业升级报告
- 职高课件模板
- 【生物】第四节 激素调节课件-2025-2026学年人教版生物八年级上册
- 卫生院安全生产培训课件
- 物流紧急事件应急预案方案
- 期中专题复习-词汇句型训练-2025-2026学年 译林版2024 英语八年级上册 原卷
- 2025年全国中小学校科普知识竞赛题库(+答案)
- 2.2创新永无止境教学课件 2025-2026学年度九年级上册 道德与法治 统编版
- 矿山爆破作业安全培训课件
- 2025-2026学年九年级英语上学期第一次月考 (四川成都专用) 2025-2026学年九年级英语上学期第一次月考 (四川成都专用)解析卷
- 【MOOC期末】《中国马克思主义与当代》(北京科技大学)期末慕课答案
- GB/T 4744-2013纺织品防水性能的检测和评价静水压法
评论
0/150
提交评论