blowfish加密算法

作者: 夜月行者 | 来源:发表于2017-11-27 18:21 被阅读0次

    简介

    自从32位处理器诞生后,blowfish加密算法在加密速度上就超越了DES加密算法,引起了人们的关注。blowfish加密算法没有注册专利,不需要授权,可以免费使用。但是知名度不如AES

    过程

    blowfish加密算法是一种对称的分组加密算法,每次加密一个64位分组,使用32位~448位的可变长度密钥,应用于内部加密。加密过程分为两个阶段:密钥预处理和信息加密。
    加密函数blowfish—encrypt()输入64位明文,输出64位密文。

    java demo

    这里采用的是使用加密时自动生成iv的方式,这样,解密的时候一定要把iv传递过去才行。

     
        public static byte[] BOFISH() {
     
            String data = "123";
            String key = "123123123";//密钥长度必须大于8个字节
            try {
     
                SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "Blowfish");
                Cipher cipher = Cipher.getInstance("Blowfish/CFB/NoPadding");
                // 用密匙初始化Cipher对象
                cipher.init(Cipher.ENCRYPT_MODE, secretKey);
                System.out.println("iv is : " + new String(cipher.getIV()));
     
                // 执行加密操作
                byte encryptedData[] = cipher.doFinal(data.getBytes());
     
                System.out.println(str16(encryptedData));
                bofishDecrypt(key, cipher.getIV(), str16(encryptedData));
     
                return encryptedData;
            } catch (Exception e) {
                System.err.println("出错!");
                e.printStackTrace();
            }
     
            return null;
        }
     
     
        public static void bofishDecrypt(String key, byte[] iv, String secretContent) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
            SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "Blowfish");
            Cipher cipher = Cipher.getInstance("Blowfish/CFB/NoPadding");
     
            IvParameterSpec param = new IvParameterSpec(iv);
            cipher.init(Cipher.DECRYPT_MODE, secretKey, param);
            System.out.println("iv is : " + new String(cipher.getIV()));
     
            // 执行加密操作
            byte encryptedData[] = cipher.doFinal(str16to2(secretContent));
            System.out.println(new String(encryptedData));
     
        }
    
    
    

    相关文章

      网友评论

        本文标题:blowfish加密算法

        本文链接:https://www.haomeiwen.com/subject/howdbxtx.html