Java在大多数平台上都支持哪种加密方案?

时间:2014-03-01 03:42:04

标签: java cryptography

我用谷歌搜索过,我已经进行过实验,但我没有运气。

我正在编写一个在android,windows / linux java和raspberry pi之间进行对话的程序,我希望在一方加密某些东西,在另一方面解密,在所有方向,我希望它能在每个可能的平台案例。

Blowfish和DES最终给了我可怕的“给定最后一块没有正确填充” 在一个平台或另一个平台上,AES在树莓上变得如此缓慢而无用。 我已经尝试了各种各样的秘密关键因素和密钥生成器,以及我的主要剪切和粘贴技能所允许的一切,并且没有任何作用。

非常令人沮丧,我正在考虑使用ROT13。至少我知道这很有效。

我知道有人要求提供代码示例,所以这里......它是与其他人展示的相同的代码。

   public static SecretKey generatedessecretkey(String password) throws InvalidKeyException, UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeySpecException
      {
        DESKeySpec keySpec = new DESKeySpec(password.getBytes("UTF8"));
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        SecretKey key = keyFactory.generateSecret(keySpec);
        return key;
      }

    public static void encrypt(IOLogger log, byte[] datablock, String grouppw, ArrayList<byte[]> resp)
      {
        try
          {
            SecretKey ks = generatedessecretkey(grouppw);
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(Cipher.ENCRYPT_MODE, ks);
            byte[] b = cipher.doFinal(datablock);
            resp.clear();
            resp.add(b);
            return;
          }
        catch (Exception e)
          {
          }
      }

编辑:这是解密,后面是同样的事情

 public static void desdecrypt(IOLogger log, byte[] datablock, String grouppw, ArrayList<byte[]> resp)
      {
        try
          {
            SecretKey ks = generatedessecretkey(grouppw);
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(Cipher.DECRYPT_MODE, ks);
            byte[] b = cipher.doFinal(datablock);
            resp.clear();
            resp.add(b);
            return;
          }
        catch (Exception e)
          {
          }
      }

1 个答案:

答案 0 :(得分:0)

  

我真正想问的问题是大多数平台上开箱即用的加密方案

JCA Specification以及给定here的标准算法列表完全回答了这个问题。

在我看来,您还没有正确指定链接和填充模式,或者根本没有。