CN109600229B - 基于ssl标准的跨平台的rsa算法 - Google Patents
基于ssl标准的跨平台的rsa算法 Download PDFInfo
- Publication number
- CN109600229B CN109600229B CN201811431811.1A CN201811431811A CN109600229B CN 109600229 B CN109600229 B CN 109600229B CN 201811431811 A CN201811431811 A CN 201811431811A CN 109600229 B CN109600229 B CN 109600229B
- Authority
- CN
- China
- Prior art keywords
- public key
- ciphertext
- private key
- key
- character string
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3249—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/168—Implementing security features at a particular protocol layer above the transport layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/302—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于SSL标准的跨平台的RSA算法,采用SSL标准生成RSA秘钥对;建立基于SSL标准的PEM流,通过RSA密码生成器分别生成公共秘钥对象和私有秘钥对象,将公共秘钥对象和私有秘钥对象输入PEM流后分别输出公钥字符串和私钥字符串;将公钥字符串和私钥字符串分别装载公钥和私钥;利用公钥对数据进行加密,生成密文;利用私钥对密文进行解密,获取明文数据;利用私钥对明文数据进行签名,生成签名密文;利用公钥对明文数据及签名密文分别进行验证。本发明有益效果:通过RSA算法实现跨平台使用,便于各个平台之间相互调用和兼容。
Description
技术领域
本发明涉及通信技术领域,具体来说,涉及一种基于SSL标准的跨平台的RSA算法。
背景技术
RSA算法是一种非对称密码算法,在使用该算法时,首先选择两个素数作为RSA算法的第一私钥元素与第二私钥元素,然后使用这两个私钥元素生成包含公钥和私钥的密钥对;使用密钥对中的公钥对数据进行加密时,只有使用私钥才能对加密后的数据进行解密,同样的,使用密钥对中的私钥对数据进行签名时,只有使用公钥才能对签名后的数据进行认证。
Java、python、JS、android等互不兼容,不能跨平台使用,MD5和SHA1已经不破解,降低其安全性。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的上述技术问题,本发明提出一种基于SSL标准的跨平台的RSA算法,能够解决了平台系统间无法通用和兼容等问题。
为实现上述技术目的,本发明的技术方案是这样实现的:
一种基于SSL标准的跨平台的RSA算法,包括以下步骤:
S1:采用SSL标准生成RSA秘钥对;
S2:建立基于SSL标准的PEM流,通过RSA密码生成器分别生成公共秘钥对象和私有秘钥对象,将公共秘钥对象和私有秘钥对象输入PEM流后分别输出公钥字符串和私钥字符串;
S3:将公钥字符串和私钥字符串分别装载公钥和私钥;
S4:利用公钥对数据进行加密,生成密文;利用私钥对密文进行解密,获取明文数据;
S5:利用私钥对明文数据进行签名,生成签名密文;
S6:利用公钥对明文数据及签名密文分别进行验证。
进一步地,所述步骤S1中采用SSL标准生成RSA秘钥对具体包括:
S11获取随机数生成器,设置秘钥助记词作为给定的种子补充剂;
S12将密码随机数生成器和秘钥大小作为初始数据,通过RSA密码生成器的initialize方法进行初始化处理;
S13通过RSA密码生成器的generateKeyPair方法生成秘钥对。
进一步地,所述步骤S3中将公钥字符串和私钥字符串分别装载公钥和私钥,具体包括:
S31将公钥字符串和私钥字符串分别转化为字节数组;
S32基于字节数组创建缓冲字符输入流,基于缓冲字符输入流建立PEMParser对象;
S33通过PEMParser对象中readObject方法分别获取PublicKeyInfo对象和PEMKeyPair对象;
S34基于PublicKeyInfo对象和PEMKeyPair对象,通过PEMKeyConverter分别获取公共秘钥对象和私有秘钥对象。
进一步地,所述步骤S4中利用公钥对数据进行加密,生成密文,具体包括:
S41:根据公共秘钥对象通过Cipher对象的init方法来初始化处理;
S42:通过Cipher对象的doFinal方法对待加密数据的字节数组进行加密处理,获取到密文字节数组;
S43:将密文字节数组通过encodeBase64String方法处理为字符串,形成base64格式密文。
进一步地,所述步骤S4中利用私钥对密文进行解密,获取明文数据,具体包括:
S041:将base64格式密文通过decodeBase64方法转化为字节数组格式的密文;
S042:根据私有秘钥对象和DECRYPT_MODE模式,通过Cipher对象的init方法来初始化处理;
S043:利用Cipher对象的doFinal方法对待解密数据的字节数组进行解密处理,获取明文内容。
进一步地,所述步骤5中利用私钥对明文数据进行签名,生成签名密文,具体包括:
S51:获取私有秘钥对象;
S52:基于SHA256withRSA获取数字签名对象;
S53:通过数字签名对象设置私有秘钥对象、进行更新签名和数字签名处理,获取签名后的字节数组信息;
S54:将签名后的字节数组通过encodeBase64String方法处理为字符串,形成base64格式签名密文。
进一步地,所述步骤6利用公钥对明文数据及签名密文分别进行验证,具体包括:
S61:将base64格式签名密文通过decodeBase64方法转化为字节数组格式的签名密文;
S62:获取公共秘钥对象;
S63:基于SHA256withRSA获取数字签名对象;
S64:通过数字签名对象设置公共秘钥对象、进行更新要验证的数据和验证签名处理。
本发明的有益效果:
1、通过RSA算法实现跨平台使用,便于各个平台之间相互调用和兼容;
2、采用SHA256安全算法,使数字签名密文更安全。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例所述的基于SSL标准的跨平台的RSA算法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,根据本发明实施例所述的一种基于SSL标准的跨平台的RSA算法,包括以下步骤:
S1:采用SSL标准生成RSA秘钥对;
S2:建立基于SSL标准的PEM流,通过RSA密码生成器分别生成公共秘钥对象和私有秘钥对象,将公共秘钥对象和私有秘钥对象输入PEM流后分别输出公钥字符串和私钥字符串;
S3:将公钥字符串和私钥字符串分别装载公钥和私钥;
S4:利用公钥对数据进行加密,生成密文;利用私钥对密文进行解密,获取明文数据;
S5:利用私钥对明文数据进行签名,生成签名密文;
S6:利用公钥对明文数据及签名密文分别进行验证。
在本发明的一个具体实施例中,所述步骤S1中采用SSL标准生成RSA秘钥对具体包括:
S11获取随机数生成器,设置秘钥助记词作为给定的种子补充剂;
S12将密码随机数生成器和秘钥大小作为初始数据,通过RSA密码生成器的initialize方法进行初始化处理;
S13通过RSA密码生成器的generateKeyPair方法生成秘钥对。
具体的,获取基于SHA1PRNG的密码强大的随机数生成器(RNG),标记为secureRandom;
设置秘钥助记词作为给定的种子补充剂;创建RSA密码生成器类,标记为keyPairGen;
把密码随机数生成器(RNG)(即secureRandom)以及秘钥大小(如模长,指定的位数)作为初始数据,通过RSA密码生成器(即keyPairGen)的initialize方法进行初始化处理;
通过RSA密码生成器(即keyPairGen)的generateKeyPair方法来生成秘钥对;
创建基于SSL标准的PEM流,标记为pemWriter;
通过RSA密码生成器(即keyPairGen)的getPublic方法来生成公共秘钥对象,标记为publicKey;
把公共秘钥对象(即publicKey)写入到PEM流(即pemWriter)中,输出字符串即为公共秘钥,格式如下:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl/ucpIwBw4ztIx4n6LcV
+ObqfxymEsF3FihSgU8Vfm19xXPpC1343TKEMD1eYvh14+ITiVgwkGxU+gHbt06X
c7AnFKMFrjsvdPUeQX526NVIBXXG7XffjjYX375QSUcvbVTon+ROPq8Sv9mh0GAd
i7Dpak5PgDsBbmRWiZzh4yVWTp6Phg+nbu3IAvcGfCtz8QF/AoMCjKXb/GIa3rcS
iLgAmGhG+STK22CmEQP2y6sKgck6qcFekQzdTTZUlXW+eWaDLHT4FGx/aUnh3MPS
sNNuq9E2O3PvWAD31e+XeLADw3sqVY09ggW4P8I8PPKSxAE6cbVbOtNVsIpIJhkv
pwIDAQAB
-----END PUBLIC KEY-----
通过RSA密码生成器(即keyPairGen)的getPrivate方法来生成私有秘钥对象,标记为priKey;
把私有秘钥对象(即priKey)写入到PEM流(即pemWriter)中,输出字符串即为私有秘钥,格式如下:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAl/ucpIwBw4ztIx4n6LcV+ObqfxymEsF3FihSgU8Vfm19xXPp
C1343TKEMD1eYvh14+ITiVgwkGxU+gHbt06Xc7AnFKMFrjsvdPUeQX526NVIBXXG
7XffjjYX375QSUcvbVTon+ROPq8Sv9mh0GAdi7Dpak5PgDsBbmRWiZzh4yVWTp6P
hg+nbu3IAvcGfCtz8QF/AoMCjKXb/GIa3rcSiLgAmGhG+STK22CmEQP2y6sKgck6
qcFekQzdTTZUlXW+eWaDLHT4FGx/aUnh3MPSsNNuq9E2O3PvWAD31e+XeLADw3sq
VY09ggW4P8I8PPKSxAE6cbVbOtNVsIpIJhkvpwIDAQABAoIBABUXdwKi52/C8/nm
qnUyS1tSeIKRcD60GJm7mM+XMQ1tloG7d0D7lpjj9NJZAetMPdgVPM7XrU2tqxFT
BrHmtz/310SW5yfp0MkzZzKBoXDogGk5khTMiPrMaP3FBJFWzq8mlG30GiO62ihD
xKANZqxHLe1x1rid97HhPN02J2cFRMPdY9/FmCQAaL2Gci78YAAmyPaBoUdYz53/
jR48ENngQFaqTXVwOh8ypdI2G8rimFyF/Ei48QZMBsGkwJ3l6ympgPRSIAPJww/G
xpJJPFka6MrCO1jQcbgheJ9CwAT+cuhPoh1UcEbXdChSDvHy/b2D0GLQPzV43nPz
McB4PFkCgYEA7bP02zPwRLMazbGNfcbQfkYNpx9ZMXTqCQ4c/GW4QDYzVuLLu1M5
7bIwZIPzjUB2WXF4pASCMBQz0gkXsONsKBOAFDOeRCC7uSysURa0u7OgUJIM5b4C
svoo6MPQObGP0QqlSPdjnMTUHwahnUI/NXsAj12CVZhiXv6fqnDS4rsCgYEAo66A
ndrK+Wrw/XjtBLaiZeBaolfKCZXGYVVecsepefgwxyAv+k11juY7g7OD7ce2MMsB
nMoyqcQr9uzDobwnybG9CiAEfTxmwEhUUP11VMp/xAKoP6DivS5FBi8MKXWKp3Ss
8TAKrUjsuNbGSer309PWemwyvWqYQmqZ3qdJJgUCgYEA29CHxVHxhcZPKhpgawi4
85zasUqXE9o3Nup7OZjjW1YEAfw3ROLA9iPLBpjTWDNdfnclhh+5OLbl+Px5kRWu
hh0KWyQk3oGat7ItI8uolM+WmAuHq8kb++DEhgPWghPGmByNHr3Pu0B1nL9oIuIJ
S+6UZP+nMHp7tbcnddlh21MCgYB8bNuyo66mOWgmlvU+HwOGhC0BudCIxsU+GmIo
yKSJZmTWCh7OnHFgBp55OE5yw904bCm2oXIv4UM2ercgTGLGjQlSGBKxjOfjBVir
FHFL2n+TZh21+LxD6VdpIvyQy5xyPVx2H/oNziC9Re8II8juytsAxx0vJkfGPTjo
q6wMbQKBgQDVTOff7Az2aedf1OPGMq9dIt8i9IcltbhGm7/5zGOxqKF8YrG5X3aq
b/+diKioCENB2POopr6hsYPrP+m90WoTP7igpl3Ny7OcArGG0Yx67vOqGvJoREyv
A9gSjfA6NMkyb+EnFQfslw7k0+C68C73Tg4XJdwAvTMM8wlJ4J6F+g==
-----END RSA PRIVATE KEY-----
在本发明的一个具体实施例中,所述步骤S3中将公钥字符串和私钥字符串分别装载公钥和私钥,具体包括:
S31将公钥字符串和私钥字符串分别转化为字节数组;
S32基于字节数组创建缓冲字符输入流,基于缓冲字符输入流建立PEMParser对象;
S33通过PEMParser对象中readObject方法分别获取PublicKeyInfo对象和PEMKeyPair对象;
S34基于PublicKeyInfo对象和PEMKeyPair对象,通过PEMKeyConverter分别获取公共秘钥对象和私有秘钥对象。
RSA公钥字符串装载公钥,具体的,将公钥字符串转化为字节数组;基于字节数组创建缓冲字符输入流,标记为inputBuffered;基于inputBuffered创建PEMParser对象,标记为pemParser;通过PEMParser对象(即pemParser)中readObject方法获取PublicKeyInfo对象;基于PublicKeyInfo对象,通过PEMKeyConverter中的getPublicKey方法获取公共秘钥对象。
RSA私钥字符串装载私钥,具体的,把步骤一中生成的公钥字符串,转化为byte数组;基于byte数组创建缓冲字符输入流,标记为inputBuffered;基于inputBuffered创建PEMParser对象,标记为pemParser;通过PEMParser对象(即pemParser)中readObject方法获取PEMKeyPair对象;基于PEMKeyPair对象,通过PEMKeyConverter中的getKeyPair方法获取秘钥对象,标记为keyPair;通过秘钥对象(即keyPair)中的getPrivate方法获取私有秘钥对象。
在本发明的一个具体实施例中,所述步骤S4中利用公钥对数据进行加密,生成密文,具体包括:
S41:根据公共秘钥对象通过Cipher对象的init方法来初始化处理;
S42:通过Cipher对象的doFinal方法对待加密数据的字节数组进行加密处理,获取到密文字节数组;
S43:将密文字节数组通过encodeBase64String方法处理为字符串,形成base64格式密文。
具体地,获取公共秘钥对象,标记为publicKey;创建基于RSA的Cipher对象,标记为cipher;根据公共秘钥对象(即publicKey),通过Cipher对象的init方法来初始化处理;通过Cipher对象的doFinal方法对待加密数据的byte数组进行加密处理,获取到密文byte数组;通过encodeBase64String方法把密文byte数组处理为字符串,形成base64格式密文;
例如:对字符串“我是中国”进行加密,得到的base64格式的密文为:
GdC/CSMi6/J8Ssokb81hWJHB17lM4phB87PlRUGZm7Gf0jZGNsvV8Tt5txBTuqiaGNDlnv4/6wd1J3sRwJjM1ptC7Lho7PKsRmFxxD31Rgxm7wCt9m75hlwTr3JHrf7zqm/h5/nQmSEQk/tD/tSTG9Qb36ShDN6nPyu73MS46znp/nEmqjnPFTQgL82yLVIZrj7QcdkUWcuYVagARMzpkxpphKSHwNptsAIvsECjl3l2O05DekoSBVU5rYFloLRnTxoJOHhSb059UZNQBRRqwh1+wK90PtYeZxLcBDAzkJLvyvvU+u7Dfve2igbVXSxkhiozvn2I/jy745u3yuvu/w==
在本发明的一个具体实施例中,所述步骤S4中利用私钥对密文进行解密,获取明文数据,具体包括:
S041:将base64格式密文通过decodeBase64方法转化为字节数组格式的密文;
S042:根据私有秘钥对象和DECRYPT_MODE模式,通过Cipher对象的init方法来初始化处理;
S043:利用Cipher对象的doFinal方法对待解密数据的字节数组进行解密处理,获取明文内容。
具体地,通过decodeBase64方法,把base64格式密文转化为byte数组格式的密文;获取私有秘钥对象,标记为priKey;创建基于RSA的Cipher对象,标记为cipher;根据私有秘钥对象(即priKey)和DECRYPT_MODE模式,通过Cipher对象的init方法来初始化处理;通过Cipher对象的doFinal方法对待解密数据的byte数组(步骤1)进行解密处理,获取明文内容。
例如:对base64格式的密文,如下:
GdC/CSMi6/J8Ssokb81hWJHB17lM4phB87PlRUGZm7Gf0jZGNsvV8Tt5txBTuqiaGNDlnv4/6wd1J3sRwJjM1ptC7Lho7PKsRmFxxD31Rgxm7wCt9m75hlwTr3JHrf7zqm/h5/nQmSEQk/tD/tSTG9Qb36ShDN6nPyu73MS46znp/nEmqjnPFTQgL82yLVIZrj7QcdkUWcuYVagARMzpkxpphKSHwNptsAIvsECjl3l2O05DekoSBVU5rYFloLRnTxoJOHhSb059UZNQBRRqwh1+wK90PtYeZxLcBDAzkJLvyvvU+u7Dfve2igbVXSxkhiozvn2I/jy745u3yuvu/w==
进行解密,就会获取“我是中国”明文内容
在本发明的一个具体实施例中,所述步骤5中利用私钥对明文数据进行签名,生成签名密文,具体包括:
S51:获取私有秘钥对象;
S52:基于SHA256withRSA获取数字签名对象;
S53:通过数字签名对象设置私有秘钥对象、进行更新签名和数字签名处理,获取签名后的字节数组信息;
S54:将签名后的字节数组通过encodeBase64String方法处理为字符串,形成base64格式签名密文。
具体地,获取私有秘钥对象,标记为priKey;基于SHA256withRSA获取数字签名对象,标记为signature;通过数字签名对象(即signature)中的initSign方法,设置私有秘钥对象(即priKey);通过数字签名对象(即signature)中的update方法,使用待签名的信息内容字节数组进行更新要签名;通过数字签名对象(即signature)中的sign方法,进行数字签名处理,获取签名后的byte数组信息;通过encodeBase64String方法把签名后byte数组处理为字符串,形成base64格式签名密文。
例如:对"我是中国&签名1"进行数字签名,得到的base64格式的签名密文如下:
eJiE+FAppZoKif6XNbKEd77jXbWBPJk/ssh6D8ViRLqvf1dWtGXSNVUqQ7IQPuJU9TidvCAOKkSach2MKu6kfZwxsHiUQ+/NEZ3X87YU6Xg2o6W9N7LrBPd/mIhrYe9Cf1TsS/+NECYUffLNgFF78I7gI6YxrCUmacl4vN25gTIprqOGrs6Bv9gWMRgAl61qWcGJele9V03HRFpDvXYrGtFk/0SsFdxFQYIHmLk5cRGZoM5UMXPgcPhX7agy2JTsv3xBKHDsu5tuR+tho4roLMxRRcKLfuBp21Sc7GNEEi+OEchpZwQ3Td/JOQO9hsfEd9EBHvtFHLRStocc1433Ng==
在本发明的一个具体实施例中,所述步骤6利用公钥对明文数据及签名密文分别进行验证,具体包括:
S61:将base64格式签名密文通过decodeBase64方法转化为字节数组格式的签名密文;
S62:获取公共秘钥对象;
S63:基于SHA256withRSA获取数字签名对象;
S64:通过数字签名对象设置公共秘钥对象、进行更新要验证的数据和验证签名处理。
具体地,通过decodeBase64方法,把base64格式签名密文转化为byte数组格式的签名密文;获取公共秘钥对象,标记为publicKey;基于SHA256withRSA获取数字签名对象,标记为signature;通过数字签名对象(即signature)中的initVerify方法,设置公共秘钥对象(即publicKey);通过数字签名对象(即signature)中的update方法,使用待验证签名的信息内容字节数组进行更新要验证的数据;通过数字签名对象(即signature)中的verify方法,进行验证签名处理,如果一致就返回真true,否则就返回假false。
综上所述,借助于本发明的上述技术方案,通过RSA算法实现跨平台使用,便于各个平台之间相互调用和兼容;采用SHA256安全算法,使数字签名密文更安全。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种基于SSL标准的跨平台的RSA算法,其特征在于,包括以下步骤:
S1:采用SSL标准生成RSA秘钥对;
S2:建立基于SSL标准的PEM流,通过RSA密码生成器分别生成公共秘钥对象和私有秘钥对象,将公共秘钥对象和私有秘钥对象输入PEM流后分别输出公钥字符串和私钥字符串;
S3:将公钥字符串和私钥字符串分别装载公钥和私钥;
S4:利用公钥对数据进行加密,生成密文;利用私钥对密文进行解密,获取明文数据;
S5:利用私钥对明文数据进行签名,生成签名密文;
S6:利用公钥对明文数据及签名密文分别进行验证;
所述步骤S1中采用SSL标准生成RSA秘钥对具体包括,S11 获取随机数生成器,设置秘钥助记词作为给定的种子补充剂;
S6利用公钥对明文数据及签名密文分别进行验证,具体包括:
S61:将base64格式签名密文通过decodeBase64方法转化为字节数组格式的签名密文;
S62:获取公共秘钥对象;
S63:基于SHA256withRSA获取数字签名对象;
S64:通过数字签名对象设置公共秘钥对象、进行更新要验证的数据和验证签名处理;
S12将密码随机数生成器和秘钥大小作为初始数据,通过RSA密码生成器的initialize方法进行初始化处理;
S13通过RSA密码生成器的generateKeyPair方法生成秘钥对;
所述步骤S3中将公钥字符串和私钥字符串分别装载公钥和私钥,具体包括,S31 将公钥字符串和私钥字符串分别转化为字节数组;
S32 基于字节数组创建缓冲字符输入流,基于缓冲字符输入流建立PEMParser对象;
S33 通过PEMParser对象中readObject方法分别获取PublicKeyInfo对象和PEMKeyPair对象;
S34 基于PublicKeyInfo对象和PEMKeyPair对象,通过PEMKeyConverter分别获取公共秘钥对象和私有秘钥对象;
所述步骤S4中利用公钥对数据进行加密,生成密文,具体包括,S41:根据公共秘钥对象通过Cipher对象的init方法来初始化处理;
S42:通过Cipher对象的doFinal方法对待加密数据的字节数组进行加密处理,获取到密文字节数组;
S43:将密文字节数组通过encodeBase64String方法处理为字符串,形成base64格式密文。
2.根据权利要求1所述的基于SSL标准的跨平台的RSA算法,其特征在于,所述步骤S4中利用私钥对密文进行解密,获取明文数据,具体包括:
S041:将base64格式密文通过decodeBase64方法转化为字节数组格式的密文;
S042:根据私有秘钥对象和DECRYPT_MODE模式,通过Cipher对象的init方法来初始化处理;
S043:利用Cipher对象的doFinal方法对待解密数据的字节数组进行解密处理,获取明文内容。
3.根据权利要求1所述的基于SSL标准的跨平台的RSA算法,其特征在于,所述步骤S5中利用私钥对明文数据进行签名,生成签名密文,具体包括:
S51:获取私有秘钥对象;
S52:基于SHA256withRSA获取数字签名对象;
S53:通过数字签名对象设置私有秘钥对象、进行更新签名和数字签名处理,获取签名后的字节数组信息;
S54:将签名后的字节数组通过encodeBase64String方法处理为字符串,形成base64格式签名密文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811431811.1A CN109600229B (zh) | 2018-11-28 | 2018-11-28 | 基于ssl标准的跨平台的rsa算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811431811.1A CN109600229B (zh) | 2018-11-28 | 2018-11-28 | 基于ssl标准的跨平台的rsa算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109600229A CN109600229A (zh) | 2019-04-09 |
CN109600229B true CN109600229B (zh) | 2022-03-22 |
Family
ID=65959106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811431811.1A Active CN109600229B (zh) | 2018-11-28 | 2018-11-28 | 基于ssl标准的跨平台的rsa算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109600229B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111865616B (zh) * | 2020-07-31 | 2024-03-22 | 海尔优家智能科技(北京)有限公司 | 基于ecdsa算法生成密钥对的方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102710605A (zh) * | 2012-05-08 | 2012-10-03 | 重庆大学 | 一种云制造环境下的信息安全管控方法 |
CN103138934A (zh) * | 2011-11-21 | 2013-06-05 | 美国博通公司 | 安全密钥生成 |
CN103595802A (zh) * | 2013-11-19 | 2014-02-19 | 烽火通信科技股份有限公司 | 家庭网关软件远程自动升级的方法 |
CN106534116A (zh) * | 2016-11-10 | 2017-03-22 | 北京锐安科技有限公司 | 非对称加密方法及装置、非对称解密方法及装置 |
CN107276998A (zh) * | 2017-06-07 | 2017-10-20 | 广州华多网络科技有限公司 | 一种基于OpenSSL的性能优化方法及装置 |
CN108306730A (zh) * | 2018-03-05 | 2018-07-20 | 飞天诚信科技股份有限公司 | 一种在嵌入式系统中生成密钥对的实现方法和装置 |
CN108449183A (zh) * | 2018-05-04 | 2018-08-24 | 北京邮电大学 | 一种使用量子随机数的非对称加密方法 |
-
2018
- 2018-11-28 CN CN201811431811.1A patent/CN109600229B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103138934A (zh) * | 2011-11-21 | 2013-06-05 | 美国博通公司 | 安全密钥生成 |
CN102710605A (zh) * | 2012-05-08 | 2012-10-03 | 重庆大学 | 一种云制造环境下的信息安全管控方法 |
CN103595802A (zh) * | 2013-11-19 | 2014-02-19 | 烽火通信科技股份有限公司 | 家庭网关软件远程自动升级的方法 |
CN106534116A (zh) * | 2016-11-10 | 2017-03-22 | 北京锐安科技有限公司 | 非对称加密方法及装置、非对称解密方法及装置 |
CN107276998A (zh) * | 2017-06-07 | 2017-10-20 | 广州华多网络科技有限公司 | 一种基于OpenSSL的性能优化方法及装置 |
CN108306730A (zh) * | 2018-03-05 | 2018-07-20 | 飞天诚信科技股份有限公司 | 一种在嵌入式系统中生成密钥对的实现方法和装置 |
CN108449183A (zh) * | 2018-05-04 | 2018-08-24 | 北京邮电大学 | 一种使用量子随机数的非对称加密方法 |
Non-Patent Citations (2)
Title |
---|
OPENSSL中RSA私钥文件(PEM格式)解析;http://blog.sina.com.cn/s/blog_4fcd1ea30100yh4s.html;《新浪博客》;20120407;第1-4页 * |
OpenSSL命令行工具验证数字签名;http://blog.csdn.net/zhangyang0402/article/details/4071196;《CSDN》;20090413;第1页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109600229A (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11323276B2 (en) | Mutual authentication of confidential communication | |
KR100436377B1 (ko) | 정보 유닛 처리 방법, 시스템, 칩카드 및 칩카드 수용장치 | |
US8660266B2 (en) | Method of delivering direct proof private keys to devices using an on-line service | |
ES2687191T3 (es) | Método de autentificación de red para transacciones electrónicas seguras | |
CA2590989C (en) | Protocol and method for client-server mutual authentication using event-based otp | |
CN101789865B (zh) | 一种用于加密的专用服务器及加密方法 | |
CN102724041B (zh) | 一种基于隐写术的密钥传输与密钥更新方法 | |
US20140040633A1 (en) | Secure transaction method from a non-secure terminal | |
CN110958219B (zh) | 一种面向医疗云共享数据的sm2代理重加密方法与装置 | |
US7693286B2 (en) | Method of delivering direct proof private keys in signed groups to devices using a distribution CD | |
US8995653B2 (en) | Generating a secret key from an asymmetric private key | |
CN108199847B (zh) | 数字安全处理方法、计算机设备及存储介质 | |
CN104901935A (zh) | 一种基于cpk的双向认证及数据交互安全保护方法 | |
US7792303B2 (en) | Method of delivering direct proof private keys to devices using a distribution CD | |
CN109951276B (zh) | 基于tpm的嵌入式设备远程身份认证方法 | |
US11616641B2 (en) | Computer implemented system and method for sharing a common secret | |
CN113067823A (zh) | 邮件用户身份认证和密钥分发方法、系统、设备及介质 | |
CN101557286A (zh) | 安全传输系统及方法 | |
CN106452771A (zh) | Jce调用密码卡实现内置rsa密钥运算的方法及装置 | |
US20220224530A1 (en) | System for restoring lost private key | |
CN112948867A (zh) | 加密报文的生成与解密方法、装置及电子设备 | |
CN109600229B (zh) | 基于ssl标准的跨平台的rsa算法 | |
US9800410B1 (en) | Data encryption system and method | |
KR100883442B1 (ko) | 온라인 서비스를 사용하여 직접 증명 비밀키를 디바이스에전달하는 방법 | |
CN112713989B (zh) | 一种解密方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |