2018年11月
第40 卷 第6 期
泰山学院学报
JOURNAL OF TAISHAN UNIVERSITY
Nov.2018
Vol.40 NO.6
基于Java 线程池的Kuznyechik 算法应用研究
刘 聪
(德州学院 信息管理学院,山东 德州 253000)
[收稿日期] 2018-09-27
[基金项目] 山东省自然科学基金联合专项(ZR2017LA007);德州学院人才引进项目
[作者简介] 刘 聪(1990-),男,山东曲阜人,德州学院信息管理学院助教。
[摘 要]使用 Java 线程池技术,对俄罗斯 2015年的国家加密标准之一“Kuznyechik”算法实施了改进。改进算法通过
使用并行计算模式,可以大大加快 Kuznyechik算法在大数据环境下的加密速度。本文创建了若干实验算例,对改进算
法的加密速度进行了有效性验证。改进算法可以为Kuznyechik 算法在大数据环境下的快速加密应用提供有利条件。
[关键词]Java;Kuznyechik算法;线程池
[中图分类号]TP309.7 [文献标识码]A [文章编号]1672-2590(2018)06-0067-07
分组密码“Kuznyechik”是俄罗斯密码标准算法集合(称为 GOST 算法)之一。该算法
能够保证信息在传输过程中的机密性和完整性,它符合现代密码的要求,具有安全、高效
率、易用和灵活等优点。适用于开发、运用到各种用途的现代信息系统中,保护数据的安
全。为了提高 Kuznyechik 算法在实际应用中的加密速度,本文根据 Kuznyechik 算法的特
点,与Java线程池技术结合,提出采用线程池技术并行加密Kuznyechik 的方法。
1 Java线程池技术
[1]
通常情况下,加密程序都是单线程运行的。为了提高程序的加密速度,可以设置多
个线程去运行。Java 语言对多线程提供了非常优秀的支持,基本的 Java 线程模型有
Thread类、Runnable接口、Callable接口、Future接口等。
线程池就是在程序运行时创建一定数量的线程保存起来,当需要时,从线程池中取
出一个线程。完成相应任务后再放回到线程池中。通过线程池,可以有效降低资源消
耗、提高程序响应速度、提高线程的可管理性。根据线程池的工作原理,算法程序需要线
程池管理器、工作线程、任务队列、数据加密实体几个部分。
2 Kuznyechik 算法介绍
[2]
Kuznyechik 在俄罗斯联邦 GOST R 34.12-2015的国家标准中定义,它有 128 比特的
块大小和 256比特的密钥长度。该算法是俄罗斯密码标准算法集合(称为 GOST 算法)之
一。该算法可以在硬件和软件中实现,能够保证信息在传输过程中的机密性和完整性,
它符合现代密码的要求。该标准适用于开发,运用到各种用途的现代信息系统。
该算法包括密钥编排和加密两部分,密钥编排算法是 Feistel结构的,有左右两支,在
密钥编排算法中,主密钥 k 为 256 比特,分为 k1 和 k2,各 128 比特。首先 k1 与常数 c1 相
加,将得到的结果经过 s 盒,L 置换,然后与 k2 相加,得左支到 k1′,之前 k1 的值变成 k2′。
密钥编排流程如图1 所示:
·· 67