使用Delphi编写的基于nano-ecc曲线库实现的国密SM2加解密和签名验签程序
2025-08-08 13:43:31 213KB Delphi
1
Delphi RSA签名与验签库 简介 本开源仓库提供了一个Delphi库,用于实现RSA签名与验签功能。该库支持三种签名与验签方式(SHA1WithRSA、SHA256WithRSA和MD5WithRSA),并且支持PKCS8和PKCS1两种秘钥格式。此外,还提供了UTF-8和GBK两种字符集选择,兼容Delphi 7到Delphi XE10版本。 功能特点 支持的签名与验签方式: SHA1WithRSA SHA256WithRSA MD5WithRSA 支持的秘钥格式: PKCS8 PKCS1 支持的字符集: UTF-8 GBK 兼容性: Delphi 7 Delphi 2007 Delphi 2009 Delphi 2010 Delphi XE Delphi XE2 Delphi XE3 Delphi XE4 Delphi XE5 Delphi XE6 Delphi XE7 Delphi XE8 Delphi 10 Seattle Delphi 10.1 Berlin Delphi 10.2 Tokyo Delphi 10.3 Rio Delphi 10.4 Sydney 使用
2025-07-22 22:16:25 755KB delphi
1
国密算法计算工具,实现了SM2非对称加解密、签名验签;SM4对称加解密、SM3摘要算法,随机数获取、数据格式转换等功能。
2025-04-25 15:01:23 33.75MB 国密算法
1
【delphi支付宝支付SDK】自己根据api文档封装的SDK,支持条码支付、扫码支付、交易查询、交易退款、退款查询、交易撤销、交易关闭、交易结算、账户转账、转账查询、对账单下载、SHA1WithRSA(RSA)和SHA256WithRSA(RSA2)签名与验签。支付宝支付api文档:https://docs.open.alipay.com/194/105203/
2024-07-29 19:51:01 1.49MB delphi
1
在IT行业中,安全是至关重要的一个领域,尤其是在网络通信和数据传输中。C#和Java作为两种广泛应用的编程语言,经常被用来实现安全相关的功能,如加密、解密、签名和验签。本文将深入探讨C# SM2算法的加密解密及签名验签过程,并结合Java的兼容性进行讲解。 SM2算法是一种基于椭圆曲线密码学(ECC)的公钥密码算法,由中国商用密码行业协会提出,主要用于确保数据的安全性和完整性。它包含了对称加密、非对称加密、数字签名等功能,特别适合于移动设备和物联网设备,因为ECC在处理效率和安全性上都优于传统的RSA等算法。 在C#中实现SM2加密和解密,首先需要引入相应的库,如Bouncy Castle,这是一个广泛支持各种加密算法的开源库。在项目中添加引用后,可以创建SM2的公钥和私钥对,然后使用这些密钥进行数据的加解密操作。代码示例如下: ```csharp using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Parameters; // 生成密钥对 var keyPairGenerator = KeyPairGenerator.Instance("EC", "BC"); keyPairGenerator.Init(new ECKeyGenerationParameters(ECCurve.CreateFromValue("sm2p256v1"), new SecureRandom())); var keyPair = keyPairGenerator.GenerateKeyPair(); var publicKey = (ECPublicKeyParameters)keyPair.Public; var privateKey = (ECPrivateKeyParameters)keyPair.Private; // 加密 var cipher = CipherUtilities.GetCipher("ECIES"); var parameters = new ECDHCBasisParameters(publicKey.Parameters.Curve, publicKey.Parameters.G, publicKey.Parameters.Order); cipher.Init(true, new ParametersWithIV(new Pkcs1Encoding(new ECDHBasicAgreement()), IV)); var encryptedBytes = cipher.DoFinal(plaintext); // 解密 cipher.Init(false, privateKey); var decryptedBytes = cipher.DoFinal(encryptedBytes); ``` 签名和验签是保证数据完整性的关键步骤。在C#中,SM2签名和验签的实现如下: ```csharp // 签名 var signer = SignerUtilities.GetSigner("SM3withSM2"); signer.Init(true, privateKey); signer.Update(plaintext, 0, plaintext.Length); var signature = signer.GenerateSignature(); // 验签 signer.Init(false, publicKey); signer.Update(plaintext, 0, plaintext.Length); var isVerified = signer.VerifySignature(signature); ``` 在实际应用中,可能需要C#与Java之间的互操作,即Java应用能够处理由C#生成的加密或签名的数据,反之亦然。这需要两者的实现遵循相同的规范和标准。幸运的是,SM2算法在Java中也有相应的实现,如通过Bouncy Castle库。只要确保C#和Java使用的曲线参数、编码方式等一致,就可以实现跨平台的数据安全交换。 在"TEST"这个压缩包文件中,可能包含了一个C#实现的SM2加密解密和签名验签的Demo项目,以及与Java联调的相关示例代码。通过这些示例,开发者可以学习如何在实际项目中运用SM2算法,确保数据在C#和Java应用之间的安全传输。 总结来说,C#中的SM2算法提供了高效且安全的加密、解密、签名和验签功能,能够与Java平台无缝对接。通过理解和应用这些技术,开发者可以在跨平台的应用场景下保证数据的安全性和完整性,为软件开发提供坚实的安全基础。
2024-07-14 15:31:53 1.86MB java
1
在IT行业中,安全是至关重要的一个领域,尤其是在网络通信和数据传输中。Java作为一种广泛使用的编程语言,提供了强大的安全机制,其中包括RSA算法。RSA是一种非对称加密算法,以其发明者Ron Rivest、Adi Shamir和Leonard Adleman的名字命名。这种算法基于大整数因子分解的困难性,被广泛应用于数字签名、数据加密和身份验证。 1. RSA算法基础 RSA算法基于两个大素数p和q的乘积n=p*q,以及欧拉函数φ(n)=(p-1)*(q-1)。选取一个与φ(n)互质的数e作为公钥的指数,然后计算e关于φ(n)的模逆d作为私钥的指数。公钥由(n, e)组成,私钥由(n, d)组成。加密过程是明文m通过指数运算c=m^e mod n得到,解密过程则是密文c通过指数运算m=c^d mod n还原。 2. Java中的RSA实现 在Java中,RSA的实现主要依赖于`java.security`和`javax.crypto`这两个包。`KeyPairGenerator`类用于生成公钥和私钥对,`Signature`类用于签名和验签,`Cipher`类则用于加密和解密。 3. 生成RSA密钥对 使用`KeyPairGenerator`类可以生成RSA密钥对。实例化一个`KeyPairGenerator`对象,指定算法为"RSA",然后设置密钥长度(如1024位或2048位),最后调用`generateKeyPair()`方法生成公钥和私钥。 4. 签名与验签 - 签名:使用私钥对数据进行签名,通过`Signature`类的`initSign(PrivateKey)`初始化,然后调用`update()`方法处理待签名的数据,最后调用`sign()`方法生成签名。 - 验签:使用公钥对签名进行验证,通过`Signature`类的`initVerify(PublicKey)`初始化,同样更新数据,然后调用`verify()`方法检查签名的有效性。 5. 加密与解密 - 加密:使用公钥对数据进行加密,通过`Cipher`类的`init(Cipher.ENCRYPT_MODE, PublicKey)`初始化,然后调用`doFinal()`方法处理待加密的数据。 - 解密:使用私钥对加密后的数据进行解密,通过`Cipher`类的`init(Cipher.DECRYPT_MODE, PrivateKey)`初始化,再调用`doFinal()`方法恢复原始数据。 6. 压缩包中的`signature`文件可能包含的是一个示例程序,演示了如何在Java中使用RSA进行签名、验签、加密和解密。这个程序可能会包括以下关键部分: - 导入必要的安全库 - 创建并初始化`KeyPairGenerator` - 生成公钥和私钥 - 创建`Signature`和`Cipher`对象 - 对数据进行签名和验签 - 对数据进行加密和解密 理解并熟练运用这些步骤,开发者可以构建安全的Java应用程序,确保数据在传输过程中的完整性和安全性。在实际项目中,还需要考虑其他安全实践,如密钥管理、证书存储和生命周期管理等。
2024-07-06 16:35:23 8KB java
1
sm2国密算法加解密,签名、验签QT工具的源代码(包含sm2,sm3和sm4源码)。 环境我使用的QT5.14的IDE编译,其他版本qt未测试。不过仅使用了几个简单控件应该关系不大。 详细介绍参见个人博客:SM2 (含SM3、SM4)国密算法工具QT版,彻底搞懂国密算法的使用 https://blog.csdn.net/yyz_1987/article/details/120501076
2024-04-08 20:43:26 2.09MB 源码
获取公私钥 Map map = SM2Util.getKeyPairStr(); JSONObject json = new JSONObject(); String privateKey = map.get("privateKey"); String publicKey= map.get("publicKey"); 生成KEY和ID String str = UUID.randomUUID().toString(); String appId = str.trim().replaceAll("-","").toUpperCase(); String appSecret = str.trim().replaceAll("-","").toUpperCase();
2023-12-10 17:08:12 4.8MB java demo
1
用于python与java之间,使用国密算法SM2加解密及签名验签
2023-11-14 02:10:51 10KB
1
基于内核秘钥保留服务的ELF签名程序和验证模块 https://blog.csdn.net/qq_42584874/article/details/123629196使用方法
2023-09-06 11:24:08 75.46MB 内核
1