java中的简单加密 - 无密钥/密码

May*_*air 8 java string random encryption algorithm

假设我有一个IP地址,192.168.1.1

我希望我的程序基于此IP地址创建一个随机的单字符串,无需密钥或密码或其他安全性即可轻松解密.

例如.

我输入192.168.1.1

程序将其转换为AzlQrEHCSD或其他随机字符串

我在程序中输入这个字符串

它被转换回192.168.1.1

是否有任何简单的算法可以做到这一点,而不会生成密钥或其他密码之类的东西?据我所知,密钥和密码都必须进行加密和解密,但我的情况并不需要它.

Kik*_*iki 9

我知道它的矫枉过正,但我​​会使用jasypt库,因为它真的很容易使用.您只需要随机种子来加密或解密.

以下是加密数据的源代码:

String seed = "ipNumber";
String myIpValue = "192.168.0.1";

StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword(seed);
String encrypted= encryptor.encrypt(myIpValue);
Run Code Online (Sandbox Code Playgroud)

对于数据解密:

StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword(seed);

String decrypted = encryptor.decrypt(encrypted);
Run Code Online (Sandbox Code Playgroud)

或者您可以将您的字符串编码或解码为base64示例如下所示: Base64 Java编码和解码字符串


Al-*_*far 6

几乎与higuaro解决方案相同,但有很多修复工作,以下代码测试和工作,因为higuaro不能像字符一样工作进入数字,当你扭转其获得单个数字并损害一切:

public String caesarCipherEncrypt(String plain) {
   String b64encoded = Base64.getEncoder().encodeToString(plain.getBytes());

   // Reverse the string
   String reverse = new StringBuffer(b64encoded).reverse().toString();

   StringBuilder tmp = new StringBuilder();
   final int OFFSET = 4;
   for (int i = 0; i < reverse.length(); i++) {
      tmp.append((char)(reverse.charAt(i) + OFFSET));
   }
   return tmp.toString();
}
Run Code Online (Sandbox Code Playgroud)

要反向删除过程:

public String caesarCipherDecrypte(String secret) {
   StringBuilder tmp = new StringBuilder();
   final int OFFSET = 4;
   for (int i = 0; i < secret.length(); i++) {
      tmp.append((char)(secret.charAt(i) - OFFSET));
   }

   String reversed = new StringBuffer(tmp.toString()).reverse().toString();
   return new String(Base64.getDecoder().decode(reversed));
}
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助.