`
stail_imaybes
  • 浏览: 8903 次
  • 性别: Icon_minigender_2
  • 来自: 福建
最近访客 更多访客>>
社区版块
存档分类
最新评论

[加密] java AES128加密与解密代码(转)

阅读更多
转自:http://www.androidkaifa.com/thread-88-1-1.html

public class SimpleCrypto {

        public static String encrypt(String seed, String cleartext) throws Exception {
                byte[] rawKey = getRawKey(seed.getBytes());
                byte[] result = encrypt(rawKey, cleartext.getBytes());
                return toHex(result);
        }
       
        public static String decrypt(String seed, String encrypted) throws Exception {
                byte[] rawKey = getRawKey(seed.getBytes());
                byte[] enc = toByte(encrypted);
                byte[] result = decrypt(rawKey, enc);
                return new String(result);
        }

        private static byte[] getRawKey(byte[] seed) throws Exception {
                KeyGenerator kgen = KeyGenerator.getInstance("AES");
                SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
                sr.setSeed(seed);
            kgen.init(128, sr); // 192 and 256 bits may not be available
            SecretKey skey = kgen.generateKey();
            byte[] raw = skey.getEncoded();
            return raw;
        }

       
        private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
                Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
            byte[] encrypted = cipher.doFinal(clear);
                return encrypted;
        }

        private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
                Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.DECRYPT_MODE, skeySpec);
            byte[] decrypted = cipher.doFinal(encrypted);
                return decrypted;
        }

        public static String toHex(String txt) {
                return toHex(txt.getBytes());
        }
        public static String fromHex(String hex) {
                return new String(toByte(hex));
        }
       
        public static byte[] toByte(String hexString) {
                int len = hexString.length()/2;
                byte[] result = new byte[len];
                for (int i = 0; i < len; i++)
                        result[i] = Integer.valueOf(hexString.substring(2*i, 2*i+2), 16).byteValue();
                return result;
        }

        public static String toHex(byte[] buf) {
                if (buf == null)
                        return "";
                StringBuffer result = new StringBuffer(2*buf.length);
                for (int i = 0; i < buf.length; i++) {
                        appendHex(result, buf[i]);
                }
                return result.toString();
        }
        private final static String HEX = "0123456789ABCDEF";
        private static void appendHex(StringBuffer sb, byte b) {
                sb.append(HEX.charAt((b>>4)&0x0f)).append(HEX.charAt(b&0x0f));
        }
       
}
分享到:
评论

相关推荐

    Java AES128加密解密

    Java中的AES128加密解密是信息安全领域中常见的数据保护技术。AES,全称Advanced Encryption Standard,是一种块密码标准,被广泛应用于各种场景,包括网络传输、存储数据加密等。128位是AES的一个关键参数,表示...

    java代码-java使用AES加密解密 AES-128-ECB加密

    java代码-java使用AES加密解密 AES-128-ECB加密 ——学习参考资料:仅用于个人学习使用

    java aes128/256 对称加密解密,rsa对称加密解密验签实现

    java aes128/256 对称加密解密,rsa对称加密解密验签实现,php java通用aes加密 支持任何形式的aes加密,文件,字符,字节等,内含php代码,可以与php平台实现aes加密,而且包含rsa非对称加密签名验签实现,都是对...

    JAVA实现AES加密和解密

    在提供的压缩包文件"java aes加密、解密"中,应该包含了一个完整的Java项目,包含了上述所有步骤的代码示例,并且每个方法都有详细的注释,可以直接运行查看效果。这个项目无需任何额外的插件,只需要Java环境即可...

    AES-128-CBC加密解密

    在Java中实现AES-128-CBC加密解密,你需要以下关键步骤: 1. 导入必要的库:`javax.crypto.Cipher`,`java.security.SecureRandom`,`java.util.Base64`等。 2. 创建密钥:首先,你需要一个128位的密钥。可以使用`...

    c AES, c++ AES, java AES, 互通, 加密解密

    在本文中,我们将探讨如何在C、C++和Java之间实现互通的AES加密解密方法,以及如何不依赖外部加密库,仅通过基本的字符和数组操作来实现这一过程。 首先,理解AES的工作原理至关重要。AES由一系列的替换和转换步骤...

    基于C语言的AES 128 CBC加密解密代码(MSP430F149验证通过)

    通过这个项目,你可以深入理解AES加密算法及其在嵌入式环境中的应用,这对于任何从事安全通信、数据保护或嵌入式开发的工程师都是宝贵的经验。同时,这个项目也展示了C语言在编写高效密码学算法方面的优势。

    java aes加密转换Base64 使用 CBC 解密模式

    java AES加密解密,使用 CBC 解密模式,EncryptByAes Aes加密 后 base64 再加 DecryptByAes Aes 解密,对 PKCS7 填充的数据进行反填充,对数据进行 PKCS7 填充 使用 CBC 解密模式, // aesDecrypt 解密 public ...

    JS实现AES-GCM加密,java实现AES-GCM解密。.md

    在工作中会经常遇到密码加密,URL传参要进行加密,在此我参照一个例子将用java实现的AES加解密程序用实例写出。JS实现AES-GCM加密,java实现AES-GCM解密

    Java实现AES加密和解密算法

    然而,仅依赖AES加密可能不够安全,因为如果攻击者获取到相同的密钥,他们就能解密数据。因此,通常会结合密钥管理策略,如使用密钥派生函数(KDFs)或密钥协商协议,以及使用非对称加密(如RSA)来安全地交换AES...

    AES128 加密 解密 C#

    AES128 加密 解密 C#实现 可以实现文件等的加密解密。

    java 基于AES实现对文件的加密 解密

    在实现AES加密解密时,要特别注意错误处理和数据完整性检查。例如,确保文件读取和写入的正确性,以及在解密过程中处理可能的异常。此外,www.willvc.com.cn 提供的资源可能是进一步学习和解决问题的途径。 总之,...

    Delphi.rar_AES_AES加密_delphi AES加密_delphi 加解密_java delphi aes

    总的来说,这个资源为Delphi开发者提供了一种实现AES加密解密的方式,并且保证了与Java平台的兼容性。通过理解和应用这些代码,开发者可以增强他们的应用程序在数据安全方面的性能,同时也能更好地与其他Java应用...

    AES-128-CBC加密解密处理,包含c# 、java 、c++、Node、PHP、Python

    微信官方提供了多种编程语言的示例代码 https://mp.weixin.qq.com/debug/wxadoc/dev/demo/aes-sample.zip 。发现没有 c# 和 java 的AES-128-CBC加密解密处理,然后我补充一下 c# 和 java 配合的加密解密

    IOS JAVA AES128加密解密

    提供的两个文件名称"AES_CBC_android_java_ios_.net通用模式"和"AES_ECB_android_java_ios通用模式"可能包含了适用于这些平台的加密解密代码示例。 总的来说,AES128加密解密在iOS、Android和Java平台上的实现虽然...

    一个PHP与JAVA使用AES128位加密通信示例

    aesx/aes4.php为php aes128加密解密类 //加密方法 function desEncryptStr($xml,$keyString){} //解密方法 function DesDecryptStr($xml,$keyString){} aesx/HttpClient.class.php 通信类 send3.php调用文件

    AES-128加密解密源码及算法详解。

    "aes.h"是一个头文件,可能包含了AES加密解密所需的函数声明和一些常量定义,方便其他程序调用。在C编程中,头文件用于提供函数原型、数据结构定义等信息,确保编译时的类型检查和链接。 "AES128加密解密原理及算法...

    AES单片机加密解密 C语言源代码

    尽管标题中提及的是Keil C51,但AES加密解密的源代码同样适用于STM32,这表明代码具有良好的移植性,可以在不同的单片机平台上使用。 **128-Bit, 192-Bit, 256-Bit 加密解密**指的是AES的不同密钥长度。根据AES的...

    java,php,GOLang,JavaScript,AES加密解密代码互通

    总的来说,跨语言的AES加密解密互通需要对各种语言的加密API有深入理解,并保持一致性以确保数据安全地在不同环境中传输。这个主题对于开发跨平台应用和微服务架构的开发者来说,是一个非常实用的知识点。

    java后台及前端js使用AES互相加解密及前端md5加密

    5. **Java与JavaScript之间的兼容**:在Java后台与JavaScript前端之间进行AES加解密时,需要注意密钥的统一和编码问题。通常,Java使用字节数组表示密钥,而JavaScript使用Base64编码的字符串,因此在前后端之间传递...

Global site tag (gtag.js) - Google Analytics