CN105187199A - 一种aes加密中的数据优化方法 - Google Patents

一种aes加密中的数据优化方法 Download PDF

Info

Publication number
CN105187199A
CN105187199A CN201510568609.3A CN201510568609A CN105187199A CN 105187199 A CN105187199 A CN 105187199A CN 201510568609 A CN201510568609 A CN 201510568609A CN 105187199 A CN105187199 A CN 105187199A
Authority
CN
China
Prior art keywords
aes
encryption
data
printstacktrace
catch
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
Application number
CN201510568609.3A
Other languages
English (en)
Inventor
李新虎
于辉
胡玉鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Group Co Ltd
Original Assignee
Inspur Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Group Co Ltd filed Critical Inspur Group Co Ltd
Priority to CN201510568609.3A priority Critical patent/CN105187199A/zh
Publication of CN105187199A publication Critical patent/CN105187199A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开一种AES加密中的数据优化方法,属于数据管理技术领域;本发明基于AES,设置二进制与十六进制的可逆方法对,密钥设置为16的整数倍,利用16进制进行AES程序内部的数据计算加密,再根据可逆方法对转化成二进制数据,进行计算外的数据保密传递,将AES内部计算过程进行优化,提高AES计算的效率,降低内存使用率。

Description

一种AES加密中的数据优化方法
技术领域
本发明公开一种AES加密中的数据优化方法,属于数据管理技术领域。
背景技术
AES加密算法即密码学中的高级加密标准(AdvancedEncryptionStandard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准,已经被多方分析且广为全世界所使用。对称密码体制的发展趋势将以分组密码为重点。分组密码算法通常由密钥扩展算法和加密(解密)算法两部分组成。密钥扩展算法将b字节用户主密钥扩展成r个子密钥。目前AES已经逐渐取代了过去的DES,原因就在于DES使用56位密钥,比较容易被破解,而AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据。AES已经变成目前对称加密中最流行算法之一。但目前的AES采用二进制算法,容易出现计算中程序报异常的情况,而且系统占用资源多,不利于系统的使用。本发明提供一种AES加密中的数据优化方法,通过一对二进制和十六进制互转的方法对,将AES内部计算过程进行优化,提高AES计算的效率,降低内存使用率。
二进制:二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,二进制和十六进制,八进制一样,都以二的幂来进位的。
十六进制是计算机中数据的一种表示方法。它由0-9,A-F组成,字母不区分大小写。十六进制照样采用位置计数法,位权是16为底的幂。
发明内容
本发明针对目前的AES采用二进制算法,容易出现计算中程序报异常的情况,而且系统占用资源多,不利于系统的使用资源的问题,提供一种AES加密中的数据优化方法,通过一对二进制和十六进制互转的方法对,将AES内部计算过程进行优化,提高AES计算的效率,降低内存使用率。
本发明提出的具体方案是:
一种AES加密中的数据优化方法,基于AES,设置二进制与十六进制的可逆方法对,密钥设置为16的整数倍,利用16进制进行AES程序内部的数据计算加密,再根据可逆方法对转化成二进制数据,进行计算外的数据保密传递。
所述数据计算加密过程为利用java语言,设置加解密java程序对,对需要加密的内容赋予加密密码,创建密码器,经过初始化,完成加密;利用解密密钥对待解密内容可解密。
所述数据加密过程代码为:
/**
*加密
*
*@paramcontent需要加密的内容
*@parampassword加密密码
*@return
*/
publicstaticbyte[]encrypt(Stringcontent,Stringpassword){
try{
KeyGeneratorkgen=KeyGenerator.getInstance("AES");
kgen.init(128,newSecureRandom(password.getBytes()));
SecretKeysecretKey=kgen.generateKey();
byte[]enCodeFormat=secretKey.getEncoded();
SecretKeySpeckey=newSecretKeySpec(enCodeFormat,"AES");
Ciphercipher=Cipher.getInstance("AES");//创建密码器
byte[]byteContent=content.getBytes("utf-8");
cipher.init(Cipher.ENCRYPT_MODE,key);//初始化
byte[]result=cipher.doFinal(byteContent);
returnresult;//加密
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(NoSuchPaddingExceptione){
e.printStackTrace();
}catch(InvalidKeyExceptione){
e.printStackTrace();
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}catch(IllegalBlockSizeExceptione){
e.printStackTrace();
}catch(BadPaddingExceptione){
e.printStackTrace();
}
returnnull;
}
完成数据加密过程。根据加密过程,可以设置解密过程代码。
设置二进制与十六进制的可逆方法对,其中二进制与十六进制互转,代码如下:
/**将二进制转换成十六进制
*@parambuf
*@return
*/
publicstaticStringparseByte2HexStr(bytebuf[]){
StringBuffersb=newStringBuffer();
for(inti=0;i<buf.length;i++){
Stringhex=Integer.toHexString(buf[i]&0xFF);
if(hex.length()==1){
hex='0'+hex;
}
sb.append(hex.toUpperCase());
}
returnsb.toString();
};
/**将十六进制转换为二进制
*@paramhexStr
*@return
*/
publicstaticbyte[]parseHexStr2Byte(StringhexStr){
if(hexStr.length()<1)
returnnull;
byte[]result=newbyte[hexStr.length()/2];
for(inti=0;i<hexStr.length()/2;i++){
inthigh=Integer.parseInt(hexStr.substring(i*2,i*2+1),16);
intlow=Integer.parseInt(hexStr.substring(i*2+1,i*2+2),16);
result[i]=(byte)(high*16+low);
}
returnresult;
}
完成二进制与十六进制的可逆方法对的互转。调用上述过程,可以计算中程序报异常的概率大大降低,16进制的数据,占用的资源会较二进制的降低90%。
本发明的有益之处是:本发明基于AES,设置二进制与十六进制的可逆方法对,密钥设置为16的整数倍,利用16进制进行AES程序内部的数据计算加密,再根据可逆方法对转化成二进制数据,进行计算外的数据保密传递,将AES内部计算过程进行优化,提高AES计算的效率,降低内存使用率。
具体实施方式
一种AES加密中的数据优化方法,基于AES,设置二进制与十六进制的可逆方法对,密钥设置为16的整数倍,利用16进制进行AES程序内部的数据计算加密,再根据可逆方法对转化成二进制数据,进行计算外的数据保密传递。
所述数据计算加密过程为利用java语言,设置加解密java程序对,对需要加密的内容赋予加密密码,创建密码器,经过初始化,完成加密;利用解密密钥对待解密内容可解密。
通过下面的步骤(以java编程语言为例),可以对AES的安全性进一步优化。
(1)加解密java程序对:
/**
*加密
*
*@paramcontent需要加密的内容
*@parampassword加密密码
*@return
*/
publicstaticbyte[]encrypt(Stringcontent,Stringpassword){
try{
KeyGeneratorkgen=KeyGenerator.getInstance("AES");
kgen.init(128,newSecureRandom(password.getBytes()));
SecretKeysecretKey=kgen.generateKey();
byte[]enCodeFormat=secretKey.getEncoded();
SecretKeySpeckey=newSecretKeySpec(enCodeFormat,"AES");
Ciphercipher=Cipher.getInstance("AES");//创建密码器
byte[]byteContent=content.getBytes("utf-8");
cipher.init(Cipher.ENCRYPT_MODE,key);//初始化
byte[]result=cipher.doFinal(byteContent);
returnresult;//加密
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(NoSuchPaddingExceptione){
e.printStackTrace();
}catch(InvalidKeyExceptione){
e.printStackTrace();
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}catch(IllegalBlockSizeExceptione){
e.printStackTrace();
}catch(BadPaddingExceptione){
e.printStackTrace();
}
returnnull;
}
/**解密
*@paramcontent待解密内容
*@parampassword解密密钥
*@return
*/
publicstaticbyte[]decrypt(byte[]content,Stringpassword){
try{
KeyGeneratorkgen=KeyGenerator.getInstance("AES");
kgen.init(128,newSecureRandom(password.getBytes()));
SecretKeysecretKey=kgen.generateKey();
byte[]enCodeFormat=secretKey.getEncoded();
SecretKeySpeckey=newSecretKeySpec(enCodeFormat,"AES");
Ciphercipher=Cipher.getInstance("AES");//创建密码器
cipher.init(Cipher.DECRYPT_MODE,key);//初始化
byte[]result=cipher.doFinal(content);
returnresult;//加密
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(NoSuchPaddingExceptione){
e.printStackTrace();
}catch(InvalidKeyExceptione){
e.printStackTrace();
}catch(IllegalBlockSizeExceptione){
e.printStackTrace();
}catch(BadPaddingExceptione){
e.printStackTrace();
}
returnnull;
}
(2)二进制与16进制互转对:
/**将二进制转换成16进制
*@parambuf
*@return
*/
publicstaticStringparseByte2HexStr(bytebuf[]){
StringBuffersb=newStringBuffer();
for(inti=0;i<buf.length;i++){
Stringhex=Integer.toHexString(buf[i]&0xFF);
if(hex.length()==1){
hex='0'+hex;
}
sb.append(hex.toUpperCase());
}
returnsb.toString();
};
/**将16进制转换为二进制
*@paramhexStr
*@return
*/
publicstaticbyte[]parseHexStr2Byte(StringhexStr){
if(hexStr.length()<1)
returnnull;
byte[]result=newbyte[hexStr.length()/2];
for(inti=0;i<hexStr.length()/2;i++){
inthigh=Integer.parseInt(hexStr.substring(i*2,i*2+1),16);
intlow=Integer.parseInt(hexStr.substring(i*2+1,i*2+2),16);
result[i]=(byte)(high*16+low);
}
returnresult;
}
(3)调用方式。
Stringcontent="test";
Stringpassword="12345678";
//加密
System.out.println("加密前:"+content);
byte[]encryptResult=encrypt(content,password);
StringencryptResultStr=parseByte2HexStr(encryptResult);
System.out.println("加密后:"+encryptResultStr);
//解密
byte[]decryptFrom=parseHexStr2Byte(encryptResultStr);
byte[]decryptResult=decrypt(decryptFrom,password);
System.out.println("解密后:"+newString(decryptResult));
(4)结果展示
加密前:test
加密后:73C58BAFE578C59366D8C995CD0B9D6D
解密后:test
完成一次加解密后的结果如上。

Claims (4)

1.一种AES加密中的数据优化方法,其特征是基于AES,设置二进制与十六进制的可逆方法对,密钥设置为16的整数倍,利用16进制进行AES程序内部的数据计算加密,再根据可逆方法对转化成二进制数据,进行计算外的数据保密传递。
2.根据权利要求1所述的一种AES加密中的数据优化方法,其特征是所述数据计算加密过程为利用java语言,设置加解密java程序对,对需要加密的内容赋予加密密码,创建密码器,经过初始化,完成加密;利用解密密钥对待解密内容可解密。
3.根据权利要求2所述的一种AES加密中的数据优化方法,其特征是所述数据加密过程代码为:
/**
*加密
*
*@paramcontent需要加密的内容
*@parampassword加密密码
*@return
*/
publicstaticbyte[]encrypt(Stringcontent,Stringpassword){
try{
KeyGeneratorkgen=KeyGenerator.getInstance("AES");
kgen.init(128,newSecureRandom(password.getBytes()));
SecretKeysecretKey=kgen.generateKey();
byte[]enCodeFormat=secretKey.getEncoded();
SecretKeySpeckey=newSecretKeySpec(enCodeFormat,"AES");
Ciphercipher=Cipher.getInstance("AES");//创建密码器
byte[]byteContent=content.getBytes("utf-8");
cipher.init(Cipher.ENCRYPT_MODE,key);//初始化
byte[]result=cipher.doFinal(byteContent);
returnresult;//加密
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(NoSuchPaddingExceptione){
e.printStackTrace();
}catch(InvalidKeyExceptione){
e.printStackTrace();
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}catch(IllegalBlockSizeExceptione){
e.printStackTrace();
}catch(BadPaddingExceptione){
e.printStackTrace();
}
returnnull;
}
完成数据加密过程。
4.根据权利要求1或3所述的一种AES加密中的数据优化方法,其特征是设置二进制与十六进制的可逆方法对,其中二进制与十六进制互转,代码如下:
/**将二进制转换成十六进制
*@parambuf
*@return
*/
publicstaticStringparseByte2HexStr(bytebuf[]){
StringBuffersb=newStringBuffer();
for(inti=0;i<buf.length;i++){
Stringhex=Integer.toHexString(buf[i]&0xFF);
if(hex.length()==1){
hex='0'+hex;
}
sb.append(hex.toUpperCase());
}
returnsb.toString();
};
/**将十六进制转换为二进制
*@paramhexStr
*@return
*/
publicstaticbyte[]parseHexStr2Byte(StringhexStr){
if(hexStr.length()<1)
returnnull;
byte[]result=newbyte[hexStr.length()/2];
for(inti=0;i<hexStr.length()/2;i++){
inthigh=Integer.parseInt(hexStr.substring(i*2,i*2+1),16);
intlow=Integer.parseInt(hexStr.substring(i*2+1,i*2+2),16);
result[i]=(byte)(high*16+low);
}
returnresult;
}
完成二进制与十六进制的可逆方法对的互转。
CN201510568609.3A 2015-09-09 2015-09-09 一种aes加密中的数据优化方法 Pending CN105187199A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510568609.3A CN105187199A (zh) 2015-09-09 2015-09-09 一种aes加密中的数据优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510568609.3A CN105187199A (zh) 2015-09-09 2015-09-09 一种aes加密中的数据优化方法

Publications (1)

Publication Number Publication Date
CN105187199A true CN105187199A (zh) 2015-12-23

Family

ID=54909055

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510568609.3A Pending CN105187199A (zh) 2015-09-09 2015-09-09 一种aes加密中的数据优化方法

Country Status (1)

Country Link
CN (1) CN105187199A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114911861A (zh) * 2022-07-15 2022-08-16 山东中联佳裕软件股份有限公司 公共卫生服务项目数据质控系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102185692A (zh) * 2011-04-25 2011-09-14 北京航空航天大学 基于aes加密算法的多模式可重构加密方法
CN102664730A (zh) * 2012-05-02 2012-09-12 西安电子科技大学 基于高级加密标准aes的128比特位密钥扩展方法
CN104253684A (zh) * 2014-09-23 2014-12-31 深圳市汇顶科技股份有限公司 加密方法和加密装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102185692A (zh) * 2011-04-25 2011-09-14 北京航空航天大学 基于aes加密算法的多模式可重构加密方法
CN102664730A (zh) * 2012-05-02 2012-09-12 西安电子科技大学 基于高级加密标准aes的128比特位密钥扩展方法
CN104253684A (zh) * 2014-09-23 2014-12-31 深圳市汇顶科技股份有限公司 加密方法和加密装置

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
HBCUI1984: "JAVA实现AES加密", 《CSDN》 *
JAVA学习网: "JAVA实现AES加密算法代码", 《HTTP://WWW.JAVAWEB.CC/LANGUAGE/JAVA/072138_2.SHTML》 *
SWANDY45: "JAVA实现AES加密算法代码", 《HTTP://BLOG.CSDN.NET/SWANDY45/ARTICLE/DETAILS/7476464》 *
千寻生活: "JAVA实现AES加密算法代码", 《HTTP://DOC.ORZ520.COM/A/DOC/2011/0321/1962230.HTML?FROM=HAOSOU》 *
白RIME: "用JAVA实现AES加密", 《HTTP://WWW.CNBLOGS.COM/VMAX-TAM/P/4624032.HTML》 *
码农: "JAVA实现AES加密", 《 HTTP://BLOG.163.COM/CHENYUAN_208/BLOG/STATIC/197648186201251894443392/》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114911861A (zh) * 2022-07-15 2022-08-16 山东中联佳裕软件股份有限公司 公共卫生服务项目数据质控系统

Similar Documents

Publication Publication Date Title
CN103716157B (zh) 分组多密钥加密方法及装置
CN101753292B (zh) 用于链接式加密模式的方法和设备
US8121294B2 (en) System and method for a derivation function for key per page
TWI478050B (zh) 編譯式電腦碼指令組之編密碼方法及裝置
CN104410616A (zh) 数据加密、解密、传输方法和系统
CN109861810B (zh) 一种基于混沌块加密算法的数据加密方法及解密方法
CN102185694A (zh) 基于指纹信息的电子文件加密的方法及其系统
CN105490802A (zh) 基于gpu的改进sm4并行加解密通信方法
KR20120079639A (ko) 화이트박스 암호 테이블을 이용한 콘텐츠 보호 장치, 콘텐츠 암호화 및 복호화 장치
CN102594842A (zh) 一种基于设备指纹的网管消息认证与加密方案
CN102594549B (zh) 一种数据多级加密、解密方法
CN113098675B (zh) 基于多项式完全同态的二进制数据加密系统及方法
CN103580851A (zh) 信息加密及解密方法
CN104660590A (zh) 一种文件加密安全云存储方案
Farhan et al. Database protection system depend on modified hash function
CN101651538A (zh) 一种基于可信密码模块的数据安全传输方法
CN114826587A (zh) 一种数据加密方法、解密方法及其装置、设备
Tang et al. A one-time pad encryption algorithm based on one-way hash and conventional block cipher
CN102546151A (zh) 一种数据加密、解密方法
CN104038337A (zh) 一种基于aes128的数据加密方法
CN111314270B (zh) 一种基于有效期均匀分布对称算法的数据加密和解密方法
CN105187199A (zh) 一种aes加密中的数据优化方法
Yoo et al. A method for secure and efficient block cipher using white-box cryptography
CN106059748A (zh) 一种基于块安全再生码的轻量级数据安全存储方法
CN105024805A (zh) 一种改进的cbc模式3des加密方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20151223