• 国密SM2加解密 for delphi xe 11.1


    SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法。

    SM2算法和 RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家 商用密码体系中被用来替换RSA算法。

    今天有时间测试了一下Delphi 开源 CnPack 组件包!加密和解密测试成功!有兴趣的朋友可以自己测试一下。我测试了一下,和在线的加解密网站通用。

    签名文本未测试成功,DEMO是签名文件的,有成功的朋友麻烦告诉告诉一下。

     以下是签名代码,未成功,有高手指点一下!

    1. procedure TfrmMain.btnSM2SignClick(Sender: TObject);
    2. var
    3. T: AnsiString;
    4. SM2: TCnSM2;
    5. PrivateKey: TCnEccPrivateKey;
    6. PublicKey: TCnEccPublicKey;
    7. EnStream: TMemoryStream;
    8. SignRes: TCnSM2Signature;
    9. begin
    10. if not CheckPublicKeyStr(edtSM2PublicKey) or not CheckPrivateKeyStr(edtSM2PrivateKey) then
    11. Exit;
    12. // if not FileExists(edtSM2FileSign.Text) then
    13. // Exit;
    14. SM2 := TCnSM2.Create(ctSM2);
    15. PrivateKey := TCnEccPrivateKey.Create;
    16. PrivateKey.SetHex(edtSM2PrivateKey.Text);
    17. PublicKey := TCnEccPublicKey.Create;
    18. PublicKey.SetHex(edtSM2PublicKey.Text);
    19. EnStream := TMemoryStream.Create;
    20. //FileStream.LoadFromFile(edtSM2FileSign.Text);
    21. T := AnsiString('123456');
    22. SignRes := TCnSM2Signature.Create;
    23. if CnSM2SignData('123456', EnStream.Memory, Length(T), SignRes,
    24. PrivateKey, PublicKey, SM2) then
    25. begin
    26. mmoSM2Decrypt.Lines.Text := SignRes.ToHex;
    27. end
    28. else
    29. ShowMessage('Sign File Failed.');
    30. SignRes.Free;
    31. EnStream.Free;
    32. PublicKey.Free;
    33. PrivateKey.Free;
    34. SM2.Free;
    35. end;

  • 相关阅读:
    动态规划(Dynamic Programming)与贪心算法(Greedy Algorithms)
    Spring 面向切面编程 第3关:AOP实现原理-JDK动态代理
    蓝桥杯 题库 简单 每日十题 day4
    Navicat操作mysql分区
    CEC2013(MATLAB):​白鲸优化算法(Beluga whale optimization,BWO)​求解CEC2013
    OpenCV 直方图和归一化
    docker安装
    python异常处理
    LeetCode75——Day31
    单元测试啊
  • 原文地址:https://blog.csdn.net/redhat588/article/details/126316492