CN114978491A - 一种基于Java的分布式密钥生成方法及装置 - Google Patents
一种基于Java的分布式密钥生成方法及装置 Download PDFInfo
- Publication number
- CN114978491A CN114978491A CN202210506962.9A CN202210506962A CN114978491A CN 114978491 A CN114978491 A CN 114978491A CN 202210506962 A CN202210506962 A CN 202210506962A CN 114978491 A CN114978491 A CN 114978491A
- Authority
- CN
- China
- Prior art keywords
- key
- seed
- java
- generation method
- distributed
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000009795 derivation Methods 0.000 claims description 12
- 241000533950 Leucojum Species 0.000 claims description 7
- 230000002085 persistent effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本发明特别涉及一种基于Java的分布式密钥生成方法及装置。该基于Java的分布式密钥生成方法及装置,使用种子生成器生成唯一种子,作为密钥产生的种子;使用Java语言开发应用程序,使用Java的JCE包和BouncyCastle开源工具包生成相应的密钥;将生成的密钥经公钥加密后导出给分布式节点,分布式节点使用各自的私钥解密,获取生成密钥的原始值后使用即可。该基于Java的分布式密钥生成方法及装置,不仅能够帮助开发者快速生成的密钥,还能保证在分布式环境下生成的密钥是不会重复的,保证了密钥的唯一性,进而保证了数据的安全,适宜推广应用。
Description
技术领域
本发明涉及分布式系统与数据加解密技术领域,特别涉及一种基于Java的分布式密钥生成方法及装置。
背景技术
目前各行各业中都用到了数据加解密,而数据加解密需要依赖密钥。在Java中生成密钥时,会使用随机数作为特定种子,如果种子一样的话,那么在相同的算法下就会生成相同的密钥。若存在两方拥有相同密钥,对于数据加解密来说是不安全的,会增加数据被破解的风险。尤其是在分布式的环境中,会进一步扩大随机数重复的概率,增加密钥重复的概率。
为了保证在分布式的环境下生成的密钥种子是唯一的,降低数据被破解的概率,本发明提出了一种基于Java的分布式密钥生成方法及装置。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的基于Java的分布式密钥生成方法及装置。
本发明是通过如下技术方案实现的:
一种基于Java的分布式密钥生成方法及装置,其特征在于:包括以下步骤:
步骤S1:使用种子生成器生成唯一种子,作为密钥产生的种子;
步骤S2:使用Java语言开发应用程序,使用Java的JCE包和BouncyCastle开源工具包生成相应的密钥;
步骤S3:将生成的密钥经公钥加密后导出给分布式节点,分布式节点使用各自的私钥解密,获取生成密钥的原始值后使用即可。
所述种子生成器采用UUID种子生成器、Redis种子生成器或Snakeflake种子生成器生成唯一种子。
所述Redis种子生成器通过Redis数据库来实现,借助于Redis数据库的incr命令实现种子的自增。步骤如下:
步骤S101:先部署Redis数据库;
步骤S102:然后使用Java开发应用程序,通过应用程序为种子设置某个初始值;
步骤S103:调用应用程序方法每次生成一个种子,即消耗一个种子后让种子数值自增.
所述步骤S101中,为了保证种子不丢失,开启Redis数据库的持久化配置,以保证数据被持久化到本地。
所述Snakeflake种子生成器使用雪花算法生成一个64比特的数,并将该数作为密钥的种子。
所述步骤S2中,密钥算法采用对称密钥算法、非对称密钥算法或HMAC密钥算法中的任意一种。
所述步骤S2中,密钥生成方法不仅支持国际密钥生成方法RSA/AES,还支持国密商用生成方法SM4/SM2,在使用指定所需密钥的算法名称和必要参数即可自动生成所需密钥。
一种基于Java的分布式密钥生成装置,其特征在于:包括种子生成器,应用程序和密文导出模块;
所述种子生成器负责生成唯一种子;
所述应用程序负责使用Java的JCE包和BouncyCastle开源工具包生成密钥;
所述密文导出模块负责将生成的密钥经公钥加密后导出给分布式节点,分布式节点使用各自的私钥解密后获取生成密钥的原始值后即可使用。
所述种子生成器采用UUID种子生成器、Redis种子生成器或Snakeflake种子生成器生成唯一种子。
所述Snakeflake种子生成器使用雪花算法生成一个64比特的数,并将该数作为密钥的种子。
所述应用程序支持对称密钥算法、非对称密钥算法和HMAC密钥算法;同时,应用程序不仅支持国际密钥生成方法RSA/AES,还支持国密商用生成方法SM4/SM2。
本发明的有益效果是:该基于Java的分布式密钥生成方法及装置,不仅能够帮助开发者快速生成的密钥,还能保证在分布式环境下生成的密钥是不会重复的,保证了密钥的唯一性,进而保证了数据的安全,适宜推广应用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1为本发明基于Java的分布式密钥生成方法示意图。
附图2为本发明密文导出方法示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明中的技术方案,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
分布式系统(distributed system)是建立在网络之上的软件系统,它具有高可用的特点,为了保证软件高可用,一般部署的时候都会部署多个副本,分布在不同或者相同的机器上。
bouncy castle(轻量级密码术包)是一种用于Java平台的开放源码的轻量级密码术包;它支持大量的密码术算法,并提供JCE 1.2.1的实现。
该基于Java的分布式密钥生成方法,包括以下步骤:
步骤S1:使用种子生成器生成唯一种子,作为密钥产生的种子;
步骤S2:使用Java语言开发应用程序,使用Java的JCE包和BouncyCastle开源工具包生成相应的密钥;
步骤S3:将生成的密钥经公钥加密后导出给分布式节点,分布式节点使用各自的私钥解密,获取生成密钥的原始值后使用即可。
所述种子生成器采用UUID种子生成器、Redis种子生成器或Snakeflake种子生成器生成唯一种子。分布式节点根据各自的使用环境自由选择种子的生成来源。
所述步骤S1中,利用种子生成器生成指定的唯一的密钥种子,保证在分布式环境下也不会出现相同的种子,从而能够避免两个相同种子出现的情况。
所述UUID种子生成器在分布式环境下生成不同的36位的UUID(通用唯一识别码)字符串,以此作为密钥的种子因子,使用该种子产生唯一的密钥。
所述Redis种子生成器通过Redis数据库来实现,借助于Redis数据库的incr命令实现种子的自增。步骤如下:
步骤S101:先部署Redis数据库;
步骤S102:然后使用Java开发应用程序,通过应用程序为种子设置某个初始值;
步骤S103:调用应用程序方法每次生成一个种子,即消耗一个种子后让种子数值自增。。
所述步骤S101中,为了保证种子不丢失,开启Redis数据库的持久化配置,以保证数据被持久化到本地。
所述Snakeflake种子生成器使用Twitter公司开源的雪花算法生成一个64比特的数,并将该数作为密钥的种子。
由于雪花算法生成的数据数量极多,可以使用69年之久,所以Snakeflake种子生成器是本发明中推荐的种子生成器。
所述步骤S2中,密钥算法采用对称密钥算法、非对称密钥算法或HMAC(Hash-basedMessage Authentication Code,密钥相关的哈希运算消息认证码)密钥算法中的任意一种。
所述步骤S2中,密钥生成方法不仅支持国际密钥生成方法RSA/AES,还支持国密商用生成方法SM4/SM2,在使用指定所需密钥的算法名称和必要参数即可自动生成所需密钥。
所述对称密钥算法包含但不限于AES(128位、192位、256位)算法和SM4(128位)算法。
所述非对称密钥算法包含但不限于RSA算法和SM2算法。
所述HMAC密钥算法所需密钥的生成,使用步骤S1中提供的的种子生成器,生成不同的数据作为HMAC所需要的密钥,从而也能够保证HMAC密钥的唯一性。
密钥导出时还可以采用
明文导出是将密钥经过Base64编码后导出。由于明文导出具有一定的风险性,所述步骤S3中采用密文导出方式。使用密文导出方式可以避免网络传输过程密钥泄露的情况,即使数据被窃取,也无法使用,保证了密钥的安全。
所述步骤S1中,支持种子的外部导入,由分布式节点自行输入种子的值,根据该种子生成密钥。为了避免重复的可能性,使用输入的种子的值,然后对其进行数据处理。
为方便开发人员快速生成密钥,本方法提供常用开发语言的SDK,如Java、Python、Go、C++等语言供开发人员使用,以便快速生成密钥并使用。
本方法的应用支持不同的环境进行部署。单机环境或者分布式环境下都可以进行部署使用。
该基于Java的分布式密钥生成装置,包括种子生成器,应用程序和密文导出模块;
所述种子生成器负责生成唯一种子;
所述应用程序负责使用Java的JCE包和BouncyCastle开源工具包生成密钥;
所述密文导出模块负责将生成的密钥经公钥加密后导出给分布式节点,分布式节点使用各自的私钥解密后获取生成密钥的原始值后即可使用。
所述种子生成器采用UUID种子生成器、Redis种子生成器或Snakeflake种子生成器生成唯一种子。
所述Snakeflake种子生成器使用雪花算法生成一个64比特的数,并将该数作为密钥的种子。
所述应用程序支持对称密钥算法、非对称密钥算法和HMAC密钥算法;同时,应用程序不仅支持国际密钥生成方法RSA/AES,还支持国密商用生成方法SM4/SM2。
以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (10)
1.一种基于Java的分布式密钥生成方法,其特征在于:包括以下步骤:
步骤S1:使用种子生成器生成唯一种子,作为密钥产生的种子;
步骤S2:使用Java语言开发应用程序,使用Java的JCE包和BouncyCastle开源工具包生成相应的密钥;
步骤S3:将生成的密钥经公钥加密后导出给分布式节点,分布式节点使用各自的私钥解密,获取生成密钥的原始值后使用即可。
2.根据权利要求1所述的基于Java的分布式密钥生成方法,其特征在于:所述种子生成器采用UUID种子生成器、Redis种子生成器或Snakeflake种子生成器生成唯一种子。
3.根据权利要求2所述的基于Java的分布式密钥生成方法,其特征在于:所述Redis种子生成器通过Redis数据库来实现,借助于Redis数据库的incr命令实现种子的自增;步骤如下:
步骤S101:先部署Redis数据库;
步骤S102:然后使用Java开发应用程序,通过应用程序为种子设置某个初始值;
步骤S103:调用应用程序方法每次生成一个种子,即消耗一个种子后让种子数值自增。
4.根据权利要求3所述的基于Java的分布式密钥生成方法,其特征在于:所述步骤S101中,为了保证种子不丢失,开启Redis数据库的持久化配置,以保证数据被持久化到本地。
5.根据权利要求2所述的基于Java的分布式密钥生成方法,其特征在于:所述Snakeflake种子生成器使用雪花算法生成一个64比特的数,并将该数作为密钥的种子。
6.根据权利要求4所述的基于Java的分布式密钥生成方法,其特征在于:所述步骤S2中,密钥算法采用对称密钥算法、非对称密钥算法或HMAC密钥算法中的任意一种。
7.根据权利要求1所述的基于Java的分布式密钥生成方法,其特征在于:所述步骤S2中,密钥生成方法不仅支持国际密钥生成方法RSA/AES,还支持国密商用生成方法SM4/SM2,在使用指定所需密钥的算法名称和必要参数即可自动生成所需密钥。
8.一种基于Java的分布式密钥生成装置,其特征在于:包括种子生成器,应用程序和密文导出模块;
所述种子生成器负责生成唯一种子;
所述应用程序负责使用Java的JCE包和BouncyCastle开源工具包生成密钥;
所述密文导出模块负责将生成的密钥经公钥加密后导出给分布式节点,分布式节点使用各自的私钥解密后获取生成密钥的原始值后即可使用。
9.根据权利要求8所述的基于Java的分布式密钥生成装置,其特征在于:所述种子生成器采用UUID种子生成器、Redis种子生成器或Snakeflake种子生成器生成唯一种子;
所述Snakeflake种子生成器使用雪花算法生成一个64比特的数,并将该数作为密钥的种子。
10.根据权利要求8所述的基于Java的分布式密钥生成装置,其特征在于:所述应用程序支持对称密钥算法、非对称密钥算法和HMAC密钥算法;同时,应用程序不仅支持国际密钥生成方法RSA/AES,还支持国密商用生成方法SM4/SM2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210506962.9A CN114978491A (zh) | 2022-05-11 | 2022-05-11 | 一种基于Java的分布式密钥生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210506962.9A CN114978491A (zh) | 2022-05-11 | 2022-05-11 | 一种基于Java的分布式密钥生成方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114978491A true CN114978491A (zh) | 2022-08-30 |
Family
ID=82980734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210506962.9A Pending CN114978491A (zh) | 2022-05-11 | 2022-05-11 | 一种基于Java的分布式密钥生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114978491A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104821944A (zh) * | 2015-04-28 | 2015-08-05 | 广东小天才科技有限公司 | 一种混合加密的网络数据安全方法及系统 |
CN106302411A (zh) * | 2016-08-03 | 2017-01-04 | 西安邮电大学 | 基于Windows平台的支持文件加密的安全云存储方法及系统 |
CN110391898A (zh) * | 2018-04-20 | 2019-10-29 | 武汉真元生物数据有限公司 | 一种基于生物密钥的数据管理方法及系统 |
CN111930384A (zh) * | 2020-07-02 | 2020-11-13 | 上海微亿智造科技有限公司 | 基于优化后的雪花算法在工业大数据中的应用方法及系统 |
CN111934878A (zh) * | 2020-06-29 | 2020-11-13 | 山东浪潮质量链科技有限公司 | 一种基于区块链的数据加密与解密方法、设备及介质 |
CN114362912A (zh) * | 2020-09-27 | 2022-04-15 | 山东爱城市网信息技术有限公司 | 基于分布式密钥中心的标识密码生成方法、电子设备及介质 |
CN115001730A (zh) * | 2022-03-02 | 2022-09-02 | 上海交通大学 | 分布式场景下基于角色属性的访问控制系统及方法 |
-
2022
- 2022-05-11 CN CN202210506962.9A patent/CN114978491A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104821944A (zh) * | 2015-04-28 | 2015-08-05 | 广东小天才科技有限公司 | 一种混合加密的网络数据安全方法及系统 |
CN106302411A (zh) * | 2016-08-03 | 2017-01-04 | 西安邮电大学 | 基于Windows平台的支持文件加密的安全云存储方法及系统 |
CN110391898A (zh) * | 2018-04-20 | 2019-10-29 | 武汉真元生物数据有限公司 | 一种基于生物密钥的数据管理方法及系统 |
CN111934878A (zh) * | 2020-06-29 | 2020-11-13 | 山东浪潮质量链科技有限公司 | 一种基于区块链的数据加密与解密方法、设备及介质 |
CN111930384A (zh) * | 2020-07-02 | 2020-11-13 | 上海微亿智造科技有限公司 | 基于优化后的雪花算法在工业大数据中的应用方法及系统 |
CN114362912A (zh) * | 2020-09-27 | 2022-04-15 | 山东爱城市网信息技术有限公司 | 基于分布式密钥中心的标识密码生成方法、电子设备及介质 |
CN115001730A (zh) * | 2022-03-02 | 2022-09-02 | 上海交通大学 | 分布式场景下基于角色属性的访问控制系统及方法 |
Non-Patent Citations (2)
Title |
---|
伍娟;: "基于国密SM4和SM2的混合密码算法研究与实现", 软件导刊, no. 08, 20 August 2013 (2013-08-20) * |
熊勇强, 朱峰, 吴建平: "分布式路由系统中的安全机制及其密钥生成技术", 清华大学学报(自然科学版), no. 07, 30 July 2001 (2001-07-30), pages 66 - 67 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11728983B2 (en) | Apparatus, system and method for generating and managing cryptographic keys for a symmetric cryptographic system | |
US10880100B2 (en) | Apparatus and method for certificate enrollment | |
US11831753B2 (en) | Secure distributed key management system | |
CN111262852B (zh) | 基于区块链实现的名片签发方法及系统 | |
CN112272314B (zh) | 一种在视联网中视频的安全传输方法、装置、设备及介质 | |
CN109005184A (zh) | 文件加密方法及装置、存储介质、终端 | |
WO2018152618A1 (en) | Symmetric cryptographic method and system and applications thereof | |
US8804953B2 (en) | Extensive ciphertext feedback | |
CN112528309A (zh) | 一种数据存储加密和解密的方法及其装置 | |
CN116248253A (zh) | 一种基于国产密码机对数据库表密钥进行派生的方法及系统 | |
CN114978491A (zh) | 一种基于Java的分布式密钥生成方法及装置 | |
CN112149166B (zh) | 非常规密码保护方法及银行智能机器 | |
JP2015070498A (ja) | 鍵交換システム、鍵交換装置、その方法、及びプログラム | |
CN114285557A (zh) | 通信加密方法、系统和装置 | |
Bojanova et al. | Cryptography classes in bugs framework (BF): Encryption bugs (ENC), verification bugs (VRF), and key management bugs (KMN) | |
CN112398647A (zh) | 一种用于渠道分销管理的耗材动态加密方法 | |
US20200169541A1 (en) | Systems and methods for encryption | |
CN117411727B (zh) | 一种通信传输对称加密的加密方法、装置及存储介质 | |
Ali | Implementation of hashed cryptography algorithm based on cryptography message syntax | |
CN116684082A (zh) | 基于后量子密码学的ChatGPT的内容过滤签名和加密方法 | |
CN113282913A (zh) | 一种密码替换方法及装置 | |
CN110837649A (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 |