zoukankan      html  css  js  c++  java
  • XE8 hash

    c++builder  xe8 hash calc

    md5、sha256、sha384、sha512

    file and string

    sha256、sha384、sha512  must call load function .

    system function not use any third party component.

    • New in XE8! New System.Hash RTL unit, with hash functions to support the new HTTP framework
    Caption:= System.Hash.THashMD5.GetHashString('ww');

    id...

    IdHashMessageDigest.pas

    Idsslopensslheaders::Load();
    
    
    //string
    void __fastcall TFrmEncrypt::btnHashStringAsHexClick(TObject *Sender)
    {
    
        String instr = LabeledEdit1->Text;
        TIdHashMessageDigest5 *md5 = new TIdHashMessageDigest5();
        LabeledEdit2->Text = md5->HashStringAsHex(instr);
        delete md5;
    
        TIdHashCRC32 *crc = new TIdHashCRC32();
        LabeledEdit3->Text = crc->HashStringAsHex(instr);
        delete crc;
    
        TIdHashSHA1 *sha1 = new TIdHashSHA1();
        LabeledEdit4->Text = sha1->HashStringAsHex(instr);
        delete sha1;
    
        TIdHashSHA224 *sha224 = new TIdHashSHA224();
        LabeledEdit5->Text = sha224->HashStringAsHex(instr);
        delete sha224;
    
        TIdHashSHA256 *sha256 = new TIdHashSHA256();
        bool bf = sha256->IsAvailable();
        LabeledEdit6->Text = sha256->HashStringAsHex(instr);
        delete sha256;
    
        TIdHashSHA384 *sha384 = new TIdHashSHA384();
        LabeledEdit7->Text = sha384->HashStringAsHex(instr);
        delete sha384;
    
        TIdHashSHA512 *sha512 = new TIdHashSHA512();
        LabeledEdit8->Text = sha512->HashStringAsHex(instr);
        delete sha512;
    }
    
    //stream
    void __fastcall TFrmEncrypt::btnCalcClick(TObject *Sender)
    {
        String fileName(LabeledEdit1->Text);
        TFileStream *fs;
        fs = new TFileStream(fileName, fmOpenRead | fmShareDenyWrite);
    
        TIdHashMessageDigest5 *md5 = new TIdHashMessageDigest5();
        LabeledEdit2->Text = md5->HashStreamAsHex(fs);
        delete md5;
    
        const __int64 Istep = 0;
        fs->Seek(Istep, soBeginning);
        TIdHashCRC32 *crc = new TIdHashCRC32();
        LabeledEdit3->Text = crc->HashStreamAsHex(fs);
        delete crc;
    
        fs->Seek(Istep, soBeginning);
        TIdHashSHA1 *sha1 = new TIdHashSHA1();
        LabeledEdit4->Text = sha1->HashStreamAsHex(fs);
        delete sha1;
    
        fs->Seek(Istep, soBeginning);
        TIdHashSHA224 *sha224 = new TIdHashSHA224();
        LabeledEdit5->Text = sha224->HashStreamAsHex(fs);
        delete sha224;
    
        fs->Seek(Istep, soBeginning);
        TIdHashSHA256 *sha256 = new TIdHashSHA256();
        LabeledEdit6->Text = sha256->HashStreamAsHex(fs);
        delete sha256;
    
        fs->Seek(Istep, soBeginning);
        TIdHashSHA384 *sha384 = new TIdHashSHA384();
        LabeledEdit7->Text = sha384->HashStreamAsHex(fs);
        delete sha384;
    
        fs->Seek(Istep, soBeginning);
        TIdHashSHA512 *sha512 = new TIdHashSHA512();
        LabeledEdit8->Text = sha512->HashStreamAsHex(fs);
        delete sha512;
    
        delete fs;
    }
    
    Idsslopensslheaders::Unload();
  • 相关阅读:
    ASP.NET页面生命周期
    C#之virtual override new解析
    js之闭包、this
    C#使用定时任务框架Windows.TaskSchedule.exe安装控制台应用程序创建的Windows服务
    C# 利用 Windows服务模板 创建、安装与卸载Windows服务
    SQL代码生成器
    C#之JSON序列化与反序列化
    Vue源码学习1——Vue构造函数
    angular编写表单验证
    使用canvas编写时间轴插件
  • 原文地址:https://www.cnblogs.com/cb168/p/4686918.html
Copyright © 2011-2022 走看看