精华内容
下载资源
问答
  • CryptLib

    2014-01-17 18:34:45
    CryptLib 编辑 CRYPTLIB 是新西兰奥克兰大学的Peter Gutmann先生花费了将近五年时间开发而成的一个加密安全工具包,它基于传统的计算机安全模型,并涉及到一个安全核心,各种抽象化了的对象位于核心之上...

    CryptLib
    CRYPTLIB 是新西兰奥克兰大学的Peter Gutmann先生花费了将近五年时间开发而成的一个加密安全工具包,它基于传统的计算机安全模型,并涉及到一个安全核心,各种抽象化了的对象位于核心之上。利用此加密库不同层次的接口,可以很容易地为各种应用系统提供安全服务,如加/解密、 数字签名、 认证等。
    展开全文
  • cryptlib

    2008-05-27 16:43:52
    一个加密的东东,有兴趣可以研究一下!!!
  • cryptlib.zip

    2012-12-12 15:05:47
    cryptlib.zip cryptlib.zip 的源代码
  • cryptlib源码

    2010-05-29 13:47:40
    cryptlib源码,被大量使用的C++加密源码库,md5加密等各种加密算法源码
  • Unable to compile cryptlib

    2021-01-06 16:43:19
    <p>Build cryptlib (cryptlib.vcxproj) fails: <pre><code> 1>cpu.cpp(314): error C3861: '_xgetbv': identifier not found </code></pre> <pre><code> // Visual Studio 2010 and above, 32 and 64-...
  • [[CryptLib alloc]encrypt:data key:key iv:iv]; NSData </em>base64 = [dataencrypt base64EncodedDataWithOptions:0]; NSString *sBase64 = [[NSString alloc] initWithData:base64 encoding:NSUTF8...
  • 编译好的cryptlib.lib,包含32位,64位,头文件 没有debug版的,只能在release版编译过 附带官网的最新版本8_2_0
  • cryptlib.rar

    2020-04-29 11:15:43
    Cryptopp CryptoPP c++源码
  • vs2017编译好的cryptlib.lib,包含32位,64位,头文件
  • 最近在项目中用到QT结合cryptlib使用的情况,折腾了两天,总算解决了,把问题记录一下 1、代码生成里边QT默认的是多线程DLL,而crypt使用的是多线程,如果crypt使用多线程dll问题会非常多,非常麻烦,使用静态库是...

    最近在项目中用到QT结合cryptlib使用的情况,折腾了两天,总算解决了,把问题记录一下

    1、代码生成里边QT默认的是多线程DLL,而crypt使用的是多线程,如果crypt使用多线程dll问题会非常多,非常麻烦,使用静态库是最省事的,这就需要设置代码生成为多线程,此时编译是QT会报错,需要在链接器命令行增加/ENTRY:"mainCRTStartup" ,解决编译问题。

    2、crypt AES加密,key如果使用AES::MAX_KEYLENGTH最大长度,Debug模式运行没有问题,Release运行时会报错。如果设置为AES::DEFAULT_KEYLENGTH标准长度就没有问题,因为这个密钥长度的问题,折腾了两天。。。

    附上QT+crypt加密解密的代码:

    //AES加密字符串
    QString EncryptTool::Encrypt(QString pStr)
    {
    	std::string strData = pStr.toStdString();
    	size_t len = strData.length();
    	std::string outstr;
    
    	//填key  
    	SecByteBlock key(AES::DEFAULT_KEYLENGTH);
    	memset(key, 0x30, m_DesKey.size());
    	m_DesKey.size() <= AES::DEFAULT_KEYLENGTH ? memcpy(key, m_DesKey.c_str(), m_DesKey.size()) : memcpy(key, m_DesKey.c_str(), AES::DEFAULT_KEYLENGTH);
    
    
    	AES::Encryption aesEncryption((byte *)key, AES::DEFAULT_KEYLENGTH);
    
    	ECB_Mode_ExternalCipher::Encryption ecbEncryption(aesEncryption);
    	StreamTransformationFilter ecbEncryptor(ecbEncryption, new HexEncoder(new StringSink(outstr)));
    	ecbEncryptor.Put(reinterpret_cast<const unsigned char*>(strData.c_str()), len);
    	ecbEncryptor.MessageEnd();
    
    	return QString::fromStdString(outstr);
    }
    //AES解密字符串
    QString EncryptTool::Decrypt(QString pStr)
    {
    	std::string strData = pStr.toStdString();
    	size_t len = strData.length();
    	std::string outstr;
    
    	//填key  
    	SecByteBlock key(AES::DEFAULT_KEYLENGTH);
    	memset(key, 0x30, m_DesKey.size());
    	m_DesKey.size() <= AES::DEFAULT_KEYLENGTH ? memcpy(key, m_DesKey.c_str(), m_DesKey.size()) : memcpy(key, m_DesKey.c_str(), AES::DEFAULT_KEYLENGTH);
    
    	AES::Decryption aesDecryption((byte *)key, CryptoPP::AES::DEFAULT_KEYLENGTH);
    	ECB_Mode_ExternalCipher::Decryption ecbDecryption(aesDecryption);
    	HexDecoder decryptor(new StreamTransformationFilter(ecbDecryption, new StringSink(outstr)));
    	decryptor.Put(reinterpret_cast<const unsigned char*>(strData.c_str()), len);
    	decryptor.MessageEnd();
    
    	return QString::fromStdString(outstr);
    }
    
    //CBC加密字符串
    QString EncryptTool::EncryptCBC(QString pStr)
    {
    	byte iv[AES::BLOCKSIZE] = "9768";
    	std::string strData = pStr.toStdString();
    	size_t len = strData.length();
    	std::string outstr;
    
    	//填key  
    	SecByteBlock key(AES::DEFAULT_KEYLENGTH);
    	memset(key, 0x30, m_DesKey.size());
    	m_DesKey.size() <= AES::DEFAULT_KEYLENGTH ? memcpy(key, m_DesKey.c_str(), m_DesKey.size()) : memcpy(key, m_DesKey.c_str(), AES::DEFAULT_KEYLENGTH);
    
    	AES::Encryption aesEncryption(key, CryptoPP::AES::DEFAULT_KEYLENGTH);
    	CBC_Mode_ExternalCipher::Encryption cbcEncryption(aesEncryption, iv);
    	StreamTransformationFilter stfEncryptor(cbcEncryption, new HexEncoder(new StringSink(outstr)));
    	stfEncryptor.Put(reinterpret_cast<const unsigned char*>(strData.c_str()), strData.length());
    	stfEncryptor.MessageEnd();
    	return QString::fromStdString(outstr);
    }

     

    展开全文
  • 文件加密AxCrypt源码附带cryptlib包与Zlib包
  • viewthread&tid=6885&extra=page%3D1&... 判断是否有cryptlib这个库, 没有的话, 插件不编译加密通讯模块。</p><p>该提问来源于开源项目:kbengine/kbengine</p></div>
  • cryptlib学习记录

    2007-09-12 17:46:00
    http://www.cs.auckland.ac.nz/~pgut001/cryptlib
    展开全文
  • cryptlib是crypto++中一个非常重要的头文件,官方例子很实用,翻译学习下

    原文https://www.cryptopp.com/wiki/User_Guide:_cryptlib.h

    Exception

    所有的异常类在Crypto++都派生自Exception,Exception仅仅是一个标准c++库 通过std::exception定义的异常接口.因此它能捕获下面展示的所有Crypto++异常

    原文中的测试代码在win10无法通过,错误处是remove函数,错误代码permission denied, 感觉是windows文件系统权限管理的原因,实验结果是,只是不创建文件就删除(remove)

    没问题,但是创建文件后删除就会失败,应该和文件句柄有关,应该出门右转windows核心编程

    int main() {
        try {
            static char* const file_name = "A:\\CryptoPP_Author_Use\\cryptlib\\test_cryplib\\Release\\file.txt";
            string input_string("Hello Im File Name");
            StringSource temp(input_string, true, new FileSink(file_name));
            AutoSeededRandomPool rng;
            //if (!(rng.GenerateByte() % 3)) {
            while (remove(file_name)) {
                perror("Error:");
                }
            //}
            string out_string;
            FileSource temp2(file_name, true, new StringSink(out_string));
            cout << out_string << endl;
        }
        catch (CryptoPP::Exception const & e){
            cerr << "Exception Catch: " << e.what()<<endl;
        }
        system("pause");
        return 0;
    }
    

    BufferedTransformation

    BufferedTransformation基础类在Crypto++占有非常重要的地位,BufferedTransformation是一个抽象基础类,它定义了一个

    通用的接口,这个接口在整个库中都在使用,为了充分运用Crypto++,你应该对BufferedTransformation以及它的派生类充分熟悉

    BufferedTransformation其中一个重要特征是:虽然它提供了很多输入输出方法,但并非所有方法都需要实现.比如,Source类没

    有实现输出方法,并且Sink类没有实现输入方法.但是另一方面,比如ByteQueue和MessageQueue,或者Base64Encoder和HexDecoder;都实

    现了s输入和输出方法.(结果,Source 类总是出现在Filter链的开始,Sink类总是出现在结束,其他的Filter类出现在其他可能的任何地方)

    在Crypto++使用者的代码中,BufferedTransfformation是一个典型的用作抽象,通常用在任何可能提供输入输出接口的对象中

    代码不贴了,见原文

    RandomNumberGenerator

    RandomNUmberGenerator是一个用来生成随机数的虚基础类,最经常使用的是AutoSeededRandomPool(在osrng.h中定义),当上述不可使

    用时,就用RandomPool(定义在randpool.h中)。

    另外一个有用的RandomNumberGenerator的派生类时NullRNG(定义在rng.h),当函数或者方法要求一个RNG参数但是不使用它时可以用它

    填充。

    示例:见原文

    HashTransformation

    所有在crypto++中实现单方向的哈希函数都派生自HashTransformation.继承于HashTansformation的类可以被直接和间接的使用。

    当被直接使用时,整个哈希操作可以通过调用CalculateDigest方法一步完成,或者多次调用Update方法最后再调用Final方法

    实现隐式调用HashTransformation派生类是通过像HashFilter这样的包装类,把一个哈希算法作为Filter的范式

    在一个哈希模块的Final方法被调用后(Final,CalculateDigest,HashFilter::MessageEnd),哈希模块就准备好计算其他哈希值,

    就像哈希模块刚被初始化那样。

    HashTransformation基础类提供Verify和VerifyDigest方法。这些方法和Final和CalculateDigest类似,他们的区别只是他们计算

    消息摘要的目的不同。为了实习普通的单向哈希函数调用VerifyDigest()和调用CalculateDigest()相同,然后手动比较计算出的哈希

    值和提供的哈希值,但是这和消息验证码不同(消息验证码也是继承自HashTransformation,也使用相同的接口)

    这段代码无法直接通过编译,这是我修改过的

    #include "hex.h"        // HexEncoder
    #include <iostream>
    #include <string>
    #include "sha.h"        // SHA-1, SHA-256, SHA-384, SHA-512
    #include "ripemd.h"     // RIPEMD160
    #include "md5.h"        // MD5
    #include "crc.h"        // CRC-32
    #include "files.h"
    
    
    #pragma comment(lib,"cryptlib.lib")
    
    void DumpHash_SingleStep(
        CryptoPP::HashTransformation& hash,
        char const* szModuleName,
        std::string const& strData)
    {
        using namespace std;
        using namespace CryptoPP;
    
        // Cannot use std::string for buffer;
        // its internal storage might not be contiguous
        SecByteBlock sbbDigest(hash.DigestSize());
    
        hash.CalculateDigest(
            sbbDigest.begin(),
            (byte const*)strData.data(),
            strData.size()); 
    
        cout << szModuleName << " SS: ";
        HexEncoder hex(new FileSink(cout));
        hex.Put(sbbDigest.begin(), sbbDigest.size());
        cout << endl;
    }
    
    void DumpHash_MultiStep(
        CryptoPP::HashTransformation& hash,
        char const* szModuleName,
        std::string const& strDataPart1,
        std::string const& strDataPart2,
        std::string const& strDataPart3)
    {
        using namespace std;
        using namespace CryptoPP;
    
        hash.Update((byte const*) strDataPart1.data(), strDataPart1.size());
        hash.Update((byte const*) strDataPart2.data(), strDataPart2.size());
        hash.Update((byte const*) strDataPart3.data(), strDataPart3.size());
    
            // Cannot use std::string for buffer;
            // its internal storage might not be contiguous
        SecByteBlock sbbDigest(hash.DigestSize());
    
        hash.Final(sbbDigest.begin());
        cout << szModuleName << " MS: ";
        HexEncoder(new FileSink(cout)).Put(sbbDigest.begin(), sbbDigest.size());
        cout << endl;
    }
    
    void DumpHash_HashFilter(
        CryptoPP::HashTransformation & hash,
        char const* szModuleName,
        std::string const& strDataPart1,
        std::string const& strDataPart2,
        std::string const& strDataPart3)
    {
        using namespace std;
        using namespace CryptoPP;
    
        // Here, we are free to use std::string as the destination,
        // because StringSink uses the correct std::string interface to append data
        string strDigest;
        HashFilter hashFilter(hash,new StringSink(strDigest));
        hashFilter.Put((byte const*) strDataPart1.data(), strDataPart1.size());
        hashFilter.Put((byte const*) strDataPart2.data(), strDataPart2.size());
        hashFilter.Put((byte const*) strDataPart3.data(), strDataPart3.size());
        hashFilter.MessageEnd();
    
            cout << szModuleName << " HF: ";
        StringSource strSource(strDigest, true,
            new HexEncoder(
                new FileSink(cout)));
        cout << endl;
    }
    
    void DumpHash(
        CryptoPP::HashTransformation& hash,
        char const* szModuleName,
        std::string const& strDataPart1,
        std::string const& strDataPart2,
        std::string const& strDataPart3)
    {
        DumpHash_SingleStep(hash, szModuleName, strDataPart1 + strDataPart2 + strDataPart3);
        DumpHash_MultiStep(hash, szModuleName, strDataPart1, strDataPart2, strDataPart3);
        DumpHash_HashFilter(hash, szModuleName, strDataPart1, strDataPart2, strDataPart3);
    }
    
    // Crypto++
    
    
    int main()
    {
        using namespace std;
        using namespace CryptoPP;
    
        std::string strDataPart1 = "part 1; ";
        std::string strDataPart2 = "part two; ";
        std::string strDataPart3 = "PART THREE.";
        SHA sha;
        SHA256 sha256;
        RIPEMD160 ripeMD160;
        MD5 md5;
        CRC32 crc32;
        try
        {
            DumpHash(sha, "SHA      ", strDataPart1, strDataPart2, strDataPart3);
            DumpHash(sha256, "SHA256   ", strDataPart1, strDataPart2, strDataPart3);
            DumpHash(ripeMD160, "RIPEMD160", strDataPart1, strDataPart2, strDataPart3);
            DumpHash(md5, "MD5      ", strDataPart1, strDataPart2, strDataPart3);
            DumpHash(crc32, "CRC32    ", strDataPart1, strDataPart2, strDataPart3);
        }
        catch (CryptoPP::Exception const& e)
        {
            cout << "CryptoPP::Exception caught: " << endl
                << e.what() << endl;
            return 1;
        }
        int a; cin >> a;
        return 0;
    }
    

    MessageAuthenticationCode

    Crypto++中所有实现消息验证码的类都派生自MessageAuthenticationCode类,MessageAuthenticationCode,派生自HashMudle;

    一个继承于MessageAuthenticationCode的类或多或少和实现哈希函数的类相同。

    消息验证码模块和哈希模块有两个主要的不同

    1. 实现消息验证码的类的构造函数需要被提供一个密钥
    2. 两次相同的输入不会产生相同的验证码,验证mac不等价于调用CalculateDigest()然后手动比较计算的哈希值和给出的哈希值,验证MAC必须通过Verify或者VerifyDigest
    展开全文
  • c++ cryptlib

    2012-02-13 15:44:22
    VS2008中引入了cryptlib.lib,编译错误 Error 106 error LNK2019: unresolved external symbol "protected: unsigned int __thiscall CryptoPP::FilterWithBufferedInput::PutMaybeModifiable(unsigned char *,...
  • 【openssl资源】 作者:Eric Yang等 官方网站:http://www.openssl.org... ... 当前版本: openssl-0.9.7 【Cryptlib】 作者:Wei Dai 下载网站:http://www.eskimo.com/~weidai/cryptlib.html 当前版本:Version 5.0
  • openssl和cryptlib简介

    千次阅读 2007-11-29 20:17:00
    Openssl主要是针对SSL协议的实现,SSL的功能体现的非常完善.而算法库只是一个附带部分.Openssl分成3个主要的部分.SSL库...Cryptlib我用的少一点,感觉主要是针对加解密算法的实现的。对SSL协议好像涉及的不多。在代码方
  • [cpp] view plain copy  print? #include  #include  #include "Base.h" //提供base64转码功能  ...#include "cryptlib.h"    int main()  {   cryptInit();   
  • cryptlib.o'. Stop. make[1]: Leaving directory '/tmp/openssl20160216-14903-pge3d/openssl-1.0.2f/crypto' Makefile:284: recipe for target 'build_crypto' failed make: *** [build_crypto...
  • <div><p>Here is config.log <p>http://pastebin.com/KBMGqyYs</p><p>该提问来源于开源项目:meganz/sdk</p></div>
  • 介绍了一种密码服务库, 指出了其缺少椭圆曲线加密算法组件, 并对其进行了相应的改进, 将椭圆曲线集成加密方案elliptic curve integrated encryption scheme, ECIES加入到核心密码算法组件库之中。...
  • making all in crypto... ...to make target `../include/openssl/bio.h', needed by `cryptlib.o'. Stop. make: *** [build_crypto] Error 1 仔细一看,其实在./config时候就有警告了。 ln: failed t
  • Cryptlib.cs

    2009-05-23 14:00:00
    using System;using System.IO;using System.Text;using System.Security.Cryptography;namespace ZBYW.ApplicationBlocks.Utils.Crypt{ /// /// Supported .Net intrinsic SymmetricAlgorithm classes....

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 209
精华内容 83
关键字:

cryptlib