当前位置: 首页 > 面试题库 >

Java AES加密整个字符串

陶福
2023-03-14
问题内容

如何使用AES加密整个字符串。我下面的代码仅加密最多识别的第一个空格:(。我该如何解决这个问题?谢谢

SecretKeySpec key = new SecretKeySpec(salt.getBytes(), "AES");
    Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "SunJCE");
    cipher.init(Cipher.ENCRYPT_MODE, key);
    String result = new String(cipher.doFinal(message.getBytes()));
    System.out.println("Encrypted:" + result);

编辑
OMG,我不愿意相信这一点,但我怎么可能会这样想:(因为我的扫描仪接下来是nextLine而不是nextLine,所以让我整日感到困扰是多么令人困扰,直到现在我才真正想到要进行检查。问题已解决:)谢谢大家


问题答案:

我没有看到任何你的代码错误,除了尝试打印任意byte[]使用new String(byte[])。尝试以下尺寸:

public static byte[] encrypt(String message) throws Exception
{
    String salt = "1111111111111111";
    SecretKeySpec key = new SecretKeySpec(salt.getBytes(), "AES");
    Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "SunJCE");
    cipher.init(Cipher.ENCRYPT_MODE, key);
    return cipher.doFinal(message.getBytes());
}

public static void main (String[] args) throws Exception
{
    String hello = Arrays.toString(encrypt("hello"));
    System.out.println("hello:" + hello);
    String helloWorld = Arrays.toString(encrypt("hello world"));
    System.out.println("hello world:" + helloWorld);
}

哪些打印:

hello:[115, -73, -46, -121, 36, -106, -99, 100, 103, -24, -40, -38, 113, -8, 40, -57]
hello world:[5, 88, -31, 115, 4, 48, -75, 44, 83, 21, 105, -67, 78, -53, -13, -28]

我想我们都可以同意那是两个不同的字节数组。



 类似资料:
  • 我有一个应用程序,需要在配置文件中存储一些秘密密码,如数据库和ftp密码/详细信息。我环顾四周,发现了许多使用AES的加密/解密解决方案,但我似乎不知道如何在不改变密钥的情况下使其工作。这意味着我可以加密和解密(使用相同的秘密密钥),但在重启等过程中保持持久性。我似乎无法让秘密钥匙保持不变。下面的示例显示了我的工作方法: 到目前为止还不错。然而,如果我运行它一次,我可能会得到'2Vhht/L80U

  • 我正在编写一个程序,以这种方式加密一个给定的字符串: 如果我们有一个整数V和一个只有元音的数组v={a,e,I,o,u}如果字符串的字母是一个元音,那么用它前面V个位置的元音替换它,只考虑元音的数组(不是整个字母表!). 要明确: 所以为了解决我的问题,我写了: 代码采用字符串的每个元素来验证它是否是元音,然后如果它是元音,则将字符串的考虑元素替换为 V 位置之前的元音。 如果字符串只有元音 i,

  • V1.1.1新增 <?php $string='666666'; $string=sp_authencode($string);//加密字符串 echo $string;//输出加密后的字符串 ?>

  • 问题内容: 我正在尝试解密从后端服务器收到的字符串,该后端服务器使用OpenSSL使用AES-256-CBC对字符串进行加密。有代码块: 不幸的是,当我到达 声明抛出以下异常: 有任何想法吗? 问题答案: 您应该在方法开始时对字符串进行 解码 ,而不是对字符串的平台特定表示进行编码。 或更确切地说: 如果您正确命名变量。 通常,每次(感觉像您必须使用)方法或构造函数时,您可能都会做错事情。你应该先

  • 以下示例有什么问题? 问题是解密字符串的第一部分是无意义的。不过,其余的都很好,我明白了...

  • 问题内容: 我在我的iPhone应用程序中使用Objective C中的加密类,但是我在努力通过Android应用程序在JAVA中使用相同的功能。我的加密代码如下: 我试图在JAVA中复制它,但是当我编码相同的数据时却得到了不同的字符串。所以我做错了事,但我无法弄清楚。这是我的JAVA代码: 谁能看到我要去哪里错了? 根据以下注释,我添加了getBytes,但是生成的字符串仍然不同: 问题答案: