CN105187199A - 一种aes加密中的数据优化方法 - Google Patents
一种aes加密中的数据优化方法 Download PDFInfo
- 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
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开一种AES加密中的数据优化方法,属于数据管理技术领域;本发明基于AES,设置二进制与十六进制的可逆方法对,密钥设置为16的整数倍,利用16进制进行AES程序内部的数据计算加密,再根据可逆方法对转化成二进制数据,进行计算外的数据保密传递,将AES内部计算过程进行优化,提高AES计算的效率,降低内存使用率。
Description
技术领域
本发明公开一种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;
}
完成二进制与十六进制的可逆方法对的互转。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114911861A (zh) * | 2022-07-15 | 2022-08-16 | 山东中联佳裕软件股份有限公司 | 公共卫生服务项目数据质控系统 |
Citations (3)
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 | 深圳市汇顶科技股份有限公司 | 加密方法和加密装置 |
-
2015
- 2015-09-09 CN CN201510568609.3A patent/CN105187199A/zh active Pending
Patent Citations (3)
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)
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)
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 |