一种基于Java的分布式密钥生成方法及装置制造方法及图纸

技术编号:34771876 阅读:58 留言:0更新日期:2022-08-31 19:35
本发明专利技术特别涉及一种基于Java的分布式密钥生成方法及装置。该基于Java的分布式密钥生成方法及装置,使用种子生成器生成唯一种子,作为密钥产生的种子;使用Java语言开发应用程序,使用Java的JCE包和BouncyCastle开源工具包生成相应的密钥;将生成的密钥经公钥加密后导出给分布式节点,分布式节点使用各自的私钥解密,获取生成密钥的原始值后使用即可。该基于Java的分布式密钥生成方法及装置,不仅能够帮助开发者快速生成的密钥,还能保证在分布式环境下生成的密钥是不会重复的,保证了密钥的唯一性,进而保证了数据的安全,适宜推广应用。适宜推广应用。适宜推广应用。

【技术实现步骤摘要】
一种基于Java的分布式密钥生成方法及装置


[0001]本专利技术涉及分布式系统与数据加解密
,特别涉及一种基于Java的分布式密钥生成方法及装置。

技术介绍

[0002]目前各行各业中都用到了数据加解密,而数据加解密需要依赖密钥。在Java中生成密钥时,会使用随机数作为特定种子,如果种子一样的话,那么在相同的算法下就会生成相同的密钥。若存在两方拥有相同密钥,对于数据加解密来说是不安全的,会增加数据被破解的风险。尤其是在分布式的环境中,会进一步扩大随机数重复的概率,增加密钥重复的概率。
[0003]为了保证在分布式的环境下生成的密钥种子是唯一的,降低数据被破解的概率,本专利技术提出了一种基于Java的分布式密钥生成方法及装置。

技术实现思路

[0004]本专利技术为了弥补现有技术的缺陷,提供了一种简单高效的基于Java的分布式密钥生成方法及装置。
[0005]本专利技术是通过如下技术方案实现的:
[0006]一种基于Java的分布式密钥生成方法及装置,其特征在于:包括以下步骤:
[0007]步骤S1:使用种子生成器生成唯一种子,作为密钥产生的种子;
[0008]步骤S2:使用Java语言开发应用程序,使用Java的JCE包和BouncyCastle开源工具包生成相应的密钥;
[0009]步骤S3:将生成的密钥经公钥加密后导出给分布式节点,分布式节点使用各自的私钥解密,获取生成密钥的原始值后使用即可。
[0010]所述种子生成器采用UUID种子生成器、Redis种子生成器或Snakeflake种子生成器生成唯一种子。
[0011]所述Redis种子生成器通过Redis数据库来实现,借助于Redis数据库的incr命令实现种子的自增。步骤如下:
[0012]步骤S101:先部署Redis数据库;
[0013]步骤S102:然后使用Java开发应用程序,通过应用程序为种子设置某个初始值;
[0014]步骤S103:调用应用程序方法每次生成一个种子,即消耗一个种子后让种子数值自增.
[0015]所述步骤S101中,为了保证种子不丢失,开启Redis数据库的持久化配置,以保证数据被持久化到本地。
[0016]所述Snakeflake种子生成器使用雪花算法生成一个64比特的数,并将该数作为密钥的种子。
[0017]所述步骤S2中,密钥算法采用对称密钥算法、非对称密钥算法或HMAC密钥算法中
的任意一种。
[0018]所述步骤S2中,密钥生成方法不仅支持国际密钥生成方法RSA/AES,还支持国密商用生成方法SM4/SM2,在使用指定所需密钥的算法名称和必要参数即可自动生成所需密钥。
[0019]一种基于Java的分布式密钥生成装置,其特征在于:包括种子生成器,应用程序和密文导出模块;
[0020]所述种子生成器负责生成唯一种子;
[0021]所述应用程序负责使用Java的JCE包和BouncyCastle开源工具包生成密钥;
[0022]所述密文导出模块负责将生成的密钥经公钥加密后导出给分布式节点,分布式节点使用各自的私钥解密后获取生成密钥的原始值后即可使用。
[0023]所述种子生成器采用UUID种子生成器、Redis种子生成器或Snakeflake种子生成器生成唯一种子。
[0024]所述Snakeflake种子生成器使用雪花算法生成一个64比特的数,并将该数作为密钥的种子。
[0025]所述应用程序支持对称密钥算法、非对称密钥算法和HMAC密钥算法;同时,应用程序不仅支持国际密钥生成方法RSA/AES,还支持国密商用生成方法SM4/SM2。
[0026]本专利技术的有益效果是:该基于Java的分布式密钥生成方法及装置,不仅能够帮助开发者快速生成的密钥,还能保证在分布式环境下生成的密钥是不会重复的,保证了密钥的唯一性,进而保证了数据的安全,适宜推广应用。
附图说明
[0027]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0028]附图1为本专利技术基于Java的分布式密钥生成方法示意图。
[0029]附图2为本专利技术密文导出方法示意图。
具体实施方式
[0030]为了使本
的人员更好的理解本专利技术中的技术方案,下面将结合本专利技术实施例,对本专利技术实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。
[0031]Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
[0032]分布式系统(distributed system)是建立在网络之上的软件系统,它具有高可用的特点,为了保证软件高可用,一般部署的时候都会部署多个副本,分布在不同或者相同的机器上。
[0033]bouncy castle(轻量级密码术包)是一种用于Java平台的开放源码的轻量级密码术包;它支持大量的密码术算法,并提供JCE 1.2.1的实现。
[0034]该基于Java的分布式密钥生成方法,包括以下步骤:
[0035]步骤S1:使用种子生成器生成唯一种子,作为密钥产生的种子;
[0036]步骤S2:使用Java语言开发应用程序,使用Java的JCE包和BouncyCastle开源工具包生成相应的密钥;
[0037]步骤S3:将生成的密钥经公钥加密后导出给分布式节点,分布式节点使用各自的私钥解密,获取生成密钥的原始值后使用即可。
[0038]所述种子生成器采用UUID种子生成器、Redis种子生成器或Snakeflake种子生成器生成唯一种子。分布式节点根据各自的使用环境自由选择种子的生成来源。
[0039]所述步骤S1中,利用种子生成器生成指定的唯一的密钥种子,保证在分布式环境下也不会出现相同的种子,从而能够避免两个相同种子出现的情况。
[0040]所述UUID种子生成器在分布式环境下生成不同的36位的UUID(通用唯一识别码)字符串,以此作为密钥的种子因子,使用该种子产生唯一的密钥。
[0041]所述Redis种子生成器通过Redis数据库来实现,借助于Redis数据库的incr命令实现种子的自增。步骤如下:
[0042]步骤S101:先部署Redis数据库;
[0043]步骤S102:然后使用Java开发应用程序,通过应用程序为种子设置某个初始值;
[0044]步骤S103:调用应用程序方法每次生本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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比特的数,并将该数作为密钥的种子...

【专利技术属性】
技术研发人员:肖培玉徐士强董玉全高传集梁圣奇
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1