以下是典型的序列密码RC4的加解密算法实现。其中秘钥流产生算法由RSA和PRGA两个核心子算法组成。
其中引用了FrankTools模块中的ItoB, XOR, StoB, BtoS, swap函数,FrankTools模块中将常用函数打包以便调用,展示如下:
水平和精力所限,疏漏之处难免,欢迎各位多多不吝赐教!
f@tacgib.club
uniapp如何加密解密rc4步骤:1、第一步是生成S盒
2、初始排列S然后用T产生S的初始置换.从S到S255,对每个Si,根据由Ti确定的方案,将Si置换为S中的另一字节
3、产生密钥流矢量S一旦完成初始化,输人密钥就不再被使用。
4、最后进行异或运算data与key按位异或操作
import javax.crypto.Cipherimport javax.crypto.spec.SecretKeySpec
import javax.xml.bind.DatatypeConverter
public class Test {
public static void main(String[] args) throws Exception{
Cipher cipher=Cipher.getInstance("RC4")
String pwd="123456"
String ptext="Hello World 你好"
SecretKeySpec key=new SecretKeySpec(pwd.getBytes("UTF-8"), "RC4")
cipher.init(Cipher.ENCRYPT_MODE, key)
byte[] cdata =cipher.update(ptext.getBytes("UTF-8"))
//解密
cipher.init(Cipher.DECRYPT_MODE, key)
byte[] ddata =cipher.update(cdata)
System.out.println("密码: "+pwd)
System.out.println("明文: "+ptext)
System.out.println("密文: "+DatatypeConverter.printHexBinary(cdata))
System.out.println("解密文: "+new String(ddata,"UTF-8"))
}
} 密码: 123456
明文: Hello World 你好
密文: 489D120B4B1342F30D5B46961D83E12B4875
解密文: Hello World 你好
RC4已经不太安全,只能用于一般加密,不能用于金融等紧要场合。