许多加密分组提供了复杂的加密算法,如MD5,这些算法中有些是不可逆的。
有时需要可逆算法。 加密敏感数据并将其放入数据库或配置文件中,然后根据需要进行恢复。
这里介绍一种非常简单的java实现无损加密算法。
算法对使用预定义种子(seed )加密的内容执行异或,然后解密只需再次执行异或即可撤消。
代码如下。
seed可以自由写。
代码:
package cn.exam.sign up.service.pay.util;
import java.math.BigInteger;
import java.util.Arrays;
公共类encr util {
私有静态最终输入radix=16;
privatestaticfinalstringseed=' 0933910847463829232312312 ';
publicstaticfinalstringencrypt {
if (密码==null )
返回' ';
if(password.length ()==0) ) ) )。
返回' ';
bigintegerbi _ passwd=newbiginteger (password.getbytes ();
bigintegerbi _ r0=newbiginteger (seed );
bigintegerbi _ R1=bi _ r0.xor (bi _ passwd );
returnbi_R1.tostring(radix );
}
publicstaticfinalstringdecrypt {
if (加密==null )
返回' ';
if(encrypted.length ()==0) ) ) ) ) )。
返回' ';
bigintegerbi _ confuse=newbiginteger (seed;
try {
bigintegerbi _ R1=newbiginteger (encrypted,RADIX );
bigintegerbi _ r0=bi _ R1.xor (bi _ confuse );
返回新字符串(bi _ r0.to bytearray );
}catch(exceptione ) {
返回' ';
}
}
publicstaticvoidmain (string args [ ] ) {
系统. out.println (arrays.tostring (args ) );
if(args==null||args.length!=2)返回;
if(-e ).equals(args[0] ) ) )
system.out.println (args [1] ' encryptpasswordis ' encrypt (args [1] );
}elseif(-d ).equals (args [0] ) ) ) )。
system.out.println (args [1] ' decryptpasswordis ' decrypt (args [1] );
}else{
系统. out.println (args-e : encrypt );
system.out.println (args-d : decrypt );
}
}
}
运行上述代码:
[-e,1234567890]
1234567890 encryptpasswordis 3132337645276898 a5
[-d,313233376455276898a5]
3132337645276898 a5 decryptpasswordis 1234567890
希望以上是正文的全部内容,对大家的学习有帮助。 另外,我希望你支持很多编剧。