是的,它只是 feistel 密码。我需要实现一个简单的程序来实现它,而不使用任何预先存在的代码。我认为我的主要问题是将字符串转换为位以对其执行某些功能?顺便说一句,我正在使用java,而且我不是那个专家。请帮我提供任何信息。你认为它可能会有所帮助..
这是我的代码:
public static String encrypt(String s) {
// convert to bits
int sByte = new BigInteger(s.getBytes()).intValue();
for(int i = 0 ; i<=1 ; i++) {
// split
String splitS1 = (""+sByte).substring(0,(""+sByte).length()/2);
String splitS2 = (""+sByte).substring((""+sByte).length()/2,(""+sByte).length());
// convert to int for function + xor
int spl1 = new BigInteger(splitS1.getBytes()).intValue();
int spl2 = new BigInteger(splitS2.getBytes()).intValue();
int F = 0;
// key based on i
if (i == 0)
F = spl2 + 0000111; // key 7
if (i == 1)
F = spl2 + 00001011; // key 11
// xor
int xOr = spl1^F;
// swap
sByte = spl2 + xOr;
}
// convert to String
String AfterEnc = new String(new BigInteger(""+sByte, 2).toByteArray());
return AfterEnc;
}