CN109728897A - 一种为等长可见字符串的加密和解密方法 - Google Patents
一种为等长可见字符串的加密和解密方法 Download PDFInfo
- Publication number
- CN109728897A CN109728897A CN201910042149.9A CN201910042149A CN109728897A CN 109728897 A CN109728897 A CN 109728897A CN 201910042149 A CN201910042149 A CN 201910042149A CN 109728897 A CN109728897 A CN 109728897A
- Authority
- CN
- China
- Prior art keywords
- value
- values
- byte
- box
- equal
- 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.)
- Withdrawn
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开一种为等长可见字符串的加密和解密方法,所述加密模块的具体加密步骤如下:判断明文字节值是否大于63,若大于63直接进行步骤103;明文字节值减去32得到的值,S‑BOX和00011111b做与运算的值,前面得到的两个值做异或运算得到的值加上32得到密文字节值,加密流程结束;明文字节值减去64得到的值,S‑BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值是否等于63;若不等于63直接进行步骤105;密文字节就直接等于明文字节;加密流程结束;明文字节值减去64得到的值,S‑BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值再加上64得到密文字节的值,加密流程结束。能够支持可见字符串加密后密文也为可见字符,且明文密文长度相等。
Description
技术领域
本发明属于信息安全技术领域,特别是涉及一种为等长可见字符串的加密和解密方法。
背景技术
信息安全问题日益严重,但很多以上线的应用在设计初期并没有规划数据的加密传输和存储,可见字符为ACSII码的取值范围为32到126。AES、DES等分组对称加密方法都会使密文变长,且密文的ACSII码为0到255,存在非可见字符。RSA、ECC等非对称加密密文也是与明文长度不相等,且密文的ACSII码为0到255。RC4加密后密文与明文长度相等,但密文的ACSII码取值范围是0到255。RC4加密算法是于1987年提出的密钥长度可变的对称流加密算法。该算法的特点是算法简单,运行速度快,而且密钥长度是可变的,可变范围为1-256字节。以上的特点使得RC4算法被广泛应用,不论是软件还是硬件都非常易于实现。现有的加密算法又不能保证密文数据格式和长度与明文一致,而且数据库表结构或数据传输消息结构又不能随意更改。
本发明就是旨在解决这类问题:在明文存储升级密文存储应用中,因为明文密文格式和长度不变,这样可以不改变数据表结构进行应用升级;同样的在明文数据传输升级密文数据传输应用中,可以不改变消息结构方便的进行应用升级。
发明内容
本发明为解决上述背景技术中存在的技术问题,提供一种为等长可见字符串的加密和解密方法。
本发明通过以下技术方案来实现:一种为等长可见字符串的加密和解密方法,包括加密模块和解密模块;所述加密模块是基于RC4算法中S-BOX实现的,所述加密模块的具体加密步骤如下:
步骤101:判断明文字节值是否大于63,若大于63直接进行步骤103;
步骤102:明文字节值减去32得到的值,S-BOX和00011111b做与运算的值,前面得到的两个值做异或运算得到的值加上32得到密文字节值,加密流程结束;
步骤103:明文字节值减去64得到的值,S-BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值是否等于63;若不等于63直接进行步骤105;若等于63进入步骤104;
步骤104:密文字节就直接等于明文字节;加密流程结束;
步骤105:明文字节值减去64得到的值,S-BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值再加上64得到密文字节的值,加密流程结束。
在进一步的实施例中,所述解密模块模块的具体加密步骤如下:
步骤201:判断明文字节值是否大于63,若大于63直接进行步骤203;
步骤202:明文字节值减去32得到的值,S-BOX和00011111b做与运算的值,前面得到的两个值做异或运算得到的值加上32得到密文字节值,解密流程结束;
步骤203:明文字节值减去64得到的值,S-BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值是否等于63;若不等于63直接进行步骤205;若等于63进入步骤204;
步骤204:密文字节就直接等于明文字节;解密流程结束;
步骤205:明文字节值减去64得到的值,S-BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值再加上64得到密文字节的值,解密流程结束。
在进一步的实施例中,所述RC4算法中的密钥流的生成主要包括两个阶段,第一阶段是初始化S盒,第二阶段是生成伪随机子密钥。
本发明的有益效果:本发明提供一种可见字符串加密为等长可见字符串的加密方法,能够支持可见字符串加密后密文也为可见字符,且明文密文长度相等。采用本方案可以不改变数据表结构进行应用升级;同样的在明文数据传输升级密文数据传输应用中,不改变消息结构方便的进行应用升级的技术问题。
附图说明
图1为本发明的加密流程图。
图2为本发明的解密流程图。
具体实施方式
下面通过具体实施例对本发明做进一步的描述。
一种为等长可见字符串的加密和解密方法,包括加密模块和解密模块;所述加密模块是基于RC4算法中S-BOX实现的,所述加密模块的具体加密步骤如下:
步骤101:判断明文字节值是否大于63,若大于63直接进行步骤103;
步骤102:明文字节值减去32得到的值,S-BOX和00011111b做与运算的值,前面得到的两个值做异或运算得到的值加上32得到密文字节值,加密流程结束;
步骤103:明文字节值减去64得到的值,S-BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值是否等于63;若不等于63直接进行步骤105;若等于63进入步骤104;
步骤104:密文字节就直接等于明文字节;加密流程结束;
步骤105:明文字节值减去64得到的值,S-BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值再加上64得到密文字节的值,加密流程结束。
加密和解密的流程一样,所述解密模块的具体加密步骤如下:
步骤201:判断明文字节值是否大于63,若大于63直接进行步骤203;
步骤202:明文字节值减去32得到的值,S-BOX和00011111b做与运算的值,前面得到的两个值做异或运算得到的值加上32得到密文字节值,解密流程结束;
步骤203:明文字节值减去64得到的值,S-BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值是否等于63;若不等于63直接进行步骤205;若等于63进入步骤204;
步骤204:密文字节就直接等于明文字节;解密流程结束;
步骤205:明文字节值减去64得到的值,S-BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值再加上64得到密文字节的值,解密流程结束。
所述RC4算法中的密钥流的生成主要包括两个阶段,第一阶段是初始化S盒,第二阶段是生成伪随机子密钥。
在密钥流的生成过程中,使用了状态向量S、指针索引i、j及密钥K等关键变量。
对于第一阶段,假设状态向量S的长度为256字节,密钥K的长度为16字节,可以用如下类C代码表示:
for (i=0; i<256; i++) {
s[i]=i;
}
j=0;
for (i=0; i<256; i++)
{
j=(j+s[i]+k[i%16])%256;
swap(s[i], s[j]);
}
在该第一阶段中,密钥K主要负责搅乱状态向量S(S-box),递增的索引i确保状态S-box中的每个元素都能够进行初始化,随机的索引j确保S-box搅乱的随机性。
对于第二阶段,假设明文长度为Len,则可以用如下类C代码表示:
i=j=0;
while (i<Len)
{
i=i++;
j=(j+S[i%256])%256;
swap(S[i%256], S[j]);
sub_k=S((S[i%256]+S[j])%256);
}
第二阶段所得到的sub_k即为密钥流,将密钥流与明文进行逐字节的异或操作即可得到密文或明文。
Claims (3)
1.一种为等长可见字符串的加密和解密方法,其特征在于,包括加密模块和解密模块;所述加密模块是基于RC4算法中S-BOX实现的,所述加密模块的具体加密步骤如下:
步骤101:判断明文字节值是否大于63,若大于63直接进行步骤103;
步骤102:明文字节值减去32得到的值,S-BOX和00011111b做与运算的值,前面得到的两个值做异或运算得到的值加上32得到密文字节值,加密流程结束;
步骤103:明文字节值减去64得到的值,S-BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值是否等于63;若不等于63直接进行步骤105;若等于63进入步骤104;
步骤104:密文字节就直接等于明文字节;加密流程结束;
步骤105:明文字节值减去64得到的值,S-BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值再加上64得到密文字节的值,加密流程结束。
2.根据权利要求1所述的一种为等长可见字符串的加密和解密方法,其特征在于,所述解密模块的具体加密步骤如下:
步骤201:判断明文字节值是否大于63,若大于63直接进行步骤203;
步骤202:明文字节值减去32得到的值,S-BOX和00011111b做与运算的值,前面得到的两个值做异或运算得到的值加上32得到密文字节值,解密流程结束;
步骤203:明文字节值减去64得到的值,S-BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值是否等于63;若不等于63直接进行步骤205;若等于63进入步骤204;
步骤204:密文字节就直接等于明文字节;解密流程结束;
步骤205:明文字节值减去64得到的值,S-BOX和00111111b做与运算的值,前面得到的两个值做异或运算得到的值再加上64得到密文字节的值,解密流程结束。
3.根据权利要求1所述的一种为等长可见字符串的加密和解密方法,其特征在于,所述RC4算法中的密钥流的生成主要包括两个阶段,第一阶段是初始化S盒,第二阶段是生成伪随机子密钥。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910042149.9A CN109728897A (zh) | 2019-01-17 | 2019-01-17 | 一种为等长可见字符串的加密和解密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910042149.9A CN109728897A (zh) | 2019-01-17 | 2019-01-17 | 一种为等长可见字符串的加密和解密方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109728897A true CN109728897A (zh) | 2019-05-07 |
Family
ID=66299117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910042149.9A Withdrawn CN109728897A (zh) | 2019-01-17 | 2019-01-17 | 一种为等长可见字符串的加密和解密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109728897A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177760A (zh) * | 2019-12-30 | 2020-05-19 | 核工业北京地质研究院 | 一种基于异或算法改进的数据加密解密方法 |
-
2019
- 2019-01-17 CN CN201910042149.9A patent/CN109728897A/zh not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177760A (zh) * | 2019-12-30 | 2020-05-19 | 核工业北京地质研究院 | 一种基于异或算法改进的数据加密解密方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101753292B (zh) | 用于链接式加密模式的方法和设备 | |
KR102136904B1 (ko) | 공유 비밀키 생성 장치, 암호화 장치, 복호화 장치, 공유 비밀키 생성 방법, 암호화 방법, 복호화 방법, 및 프로그램 | |
US7945049B2 (en) | Stream cipher using multiplication over a finite field of even characteristic | |
US20060023875A1 (en) | Enhanced stream cipher combining function | |
CN102484581A (zh) | 使用中间数据更改的具有可配置密钥的白盒密码系统 | |
WO2014136386A1 (ja) | タグ生成装置、タグ生成方法およびタグ生成プログラム | |
CN108141352B (zh) | 密码设备、方法、装置和计算机可读介质和编码设备、方法、装置和计算机可读介质 | |
Singh | Modified Vigenere encryption algorithm and its hybrid implementation with Base64 and AES | |
US8122075B2 (en) | Pseudorandom number generator and encryption device using the same | |
CN102546156A (zh) | 一种分组加密方法、系统和装置 | |
CN103580851A (zh) | 信息加密及解密方法 | |
Ghazi et al. | Robust and efficient dynamic stream cipher cryptosystem | |
CN114124359A (zh) | 保留格式加密数据的方法、装置、电子设备及存储介质 | |
CN104219045A (zh) | Rc4 流密码生成器 | |
CN109728897A (zh) | 一种为等长可见字符串的加密和解密方法 | |
CN102043641A (zh) | 电子设备的固件升级方法 | |
CN111314052B (zh) | 一种数据加密和解密方法 | |
EP3413509B1 (en) | Cmac computation using white-box implementations with external encodings | |
CN109714151A (zh) | 基于aes-gcm的芯片数据处理方法及系统 | |
JP4857230B2 (ja) | 疑似乱数生成装置及びそれを用いた暗号化処理装置 | |
RU2738321C1 (ru) | Способ криптографического преобразования и устройство для его осуществления | |
JP2019504343A (ja) | 計算デバイス及び方法 | |
KR101076747B1 (ko) | 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치 | |
JP2011160229A (ja) | 認証付きストリーム暗号の暗号化装置、認証付きストリーム暗号の復号化装置、暗号化方法、復号化方法およびプログラム | |
JP2018514816A (ja) | 変形鍵を用いる高速aes |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190507 |
|
WW01 | Invention patent application withdrawn after publication |