aes加密with salt ,可变输出密文, 密度更高级别,现在没有实际使用。
package util; import java.security.SecureRandom; import java.security.spec.KeySpec; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; import android.annotation.SuppressLint; import android.util.Base64; public class CipherADesSalt { final static int interationCount = 1000; final static int keyLength = 256; final static int saltLenth = keyLength; private byte mSalt[]; private byte mIvi[]; @SuppressLint("TrulyRandom") public String encrypt(String plaintext,String password) throws Exception{ SecureRandom random = new SecureRandom(); byte[] salt = new byte[saltLenth]; random.nextBytes(salt); KeySpec keySpec = new PBEKeySpec(password.toCharArray(),salt,interationCount,keyLength); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); byte[] keyBytes = keyFactory.generateSecret(keySpec).getEncoded(); SecretKey key = new SecretKeySpec(keyBytes, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); byte[] iv = new byte[cipher.getBlockSize()]; random.nextBytes(iv); IvParameterSpec ivParams = new IvParameterSpec(iv); cipher.init(Cipher.ENCRYPT_MODE,key,ivParams); byte[] ciphertext = cipher.doFinal(plaintext.getBytes("UTF-8")); mSalt = salt; mIvi = iv; return Base64.encodeToString(ciphertext, Base64.DEFAULT); } public byte[] getDecrySalt(){ return mSalt; } public byte[] getDecryIvi(){ return mIvi; } public String decrypt(String encry,String password,byte salt[],byte ivi[]) throws Exception{ KeySpec keySpec = new PBEKeySpec(password.toCharArray(),salt,interationCount,keyLength); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); byte[] keyBytes = keyFactory.generateSecret(keySpec).getEncoded(); SecretKey key = new SecretKeySpec(keyBytes, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); IvParameterSpec ivParams2 = new IvParameterSpec(ivi); cipher.init(Cipher.DECRYPT_MODE,key,ivParams2); byte decry[] = cipher.doFinal(Base64.decode(encry, Base64.DEFAULT)); return new String(decry,"UTF-8"); } }
相关推荐
在PB中,可以使用第三方库或者自定义的C/C++动态链接库(DLL)来实现AES加密。 2. 非对称加密:非对称加密使用一对公钥和私钥,公钥用于加密,私钥用于解密。RSA是最知名的非对称加密算法,适合于保护小量数据,如...
对于大量数据的加密解密,考虑使用多线程或者硬件加速,如Intel的AES-NI指令集,可以显著提高AES操作的速度。 在实际应用中,理解AES的工作原理和正确使用加密库是至关重要的,同时也要注意遵循密码学的最佳实践,...
Java AES256加密解密示例代码 Java AES256加密解密示例代码主要介绍了Java AES256加密解密示例代码,通过示例代码对大家的学习或者工作具有一定的参考学习价值。 什么是 AES 256? 高级加密标准(英语:Advanced ...
在Java中,可以使用`javax.crypto.Cipher`类实现AES加密。流程包括:初始化Cipher对象、设置工作模式(如ECB、CBC等)、生成秘钥并设置、最后执行加密操作。 5. **解密AES-128** 解密过程与加密类似,也需要相同的...
在ABAP中,有时还需要自定义加密解密逻辑,这时可以利用ABAP的编程能力实现。例如,你可以创建一个自定义加密函数,基于已有的加密算法(如AES)进行扩展,以满足特定的安全需求。同时,别忘了在设计自定义加密算法...
在实际应用中,密码加密解密不仅涉及技术层面,还需要考虑合规性和法规要求,比如GDPR(欧洲通用数据保护条例)等。因此,理解并正确使用“pb密码加密解密代码f_passwd_encrypt”这样的工具或库,对于构建安全的IT...
在JavaScript中,有时我们需要对URL中的参数进行加密和解密,以确保数据的安全性,防止敏感信息被轻易读取。...在实际的Web应用中,通常会使用更强大的加密库,如AES或RSA,来提供更强的安全保障。
本项目“java_code.rar”聚焦于Java实现的字符串加密解密技术,旨在提供一个实用的解决方案来保护敏感信息。 首先,我们需要理解加密和解密的基本概念。加密是将明文(可读信息)转化为密文(不可读信息)的过程,...
"WEB加密解密小系统"是一个典型的示例,它展示了如何在Java Web环境中实现数据的安全存储和访问。该系统的特点是对每个文件采用独立密码,并在用户查看详细信息时进行验证,增强了安全性。下面我们将深入探讨其中...
2. 实例化加密/解密对象,如AES加密: ```vb Dim aes As New AesCryptoServiceProvider() aes.Key = Encoding.UTF8.GetBytes("YourKey12345678") aes.IV = Encoding.UTF8.GetBytes("YourIV12345678") ``` 3. 创建...
以上代码展示了如何使用AES加密和解密数据。`encrypt()`方法接受一个密钥和待加密的数据,返回加密后的字节数组;`decrypt()`方法则接受密钥和已加密的数据,返回解密后的原始字节数组。 总的来说,AES加密是保护...
在IT领域,字符串加密解密是一项至关重要的技术,主要用于保护数据的安全性和隐私。字符串加密是对明文字符串进行处理,将其转换成无法直接识别的密文,以防止未经授权的访问或泄露。而解密则是将密文恢复为原始的...
这个"Delphi文本加密解密程序"的压缩包很可能是包含了一个使用Delphi编写的程序,该程序具有对文本进行加解密的功能。在IT领域,文本加密和解密是信息安全的重要组成部分,它涉及到数据保护、隐私安全以及网络通信的...
这个名为“功能强大的php加密解密类.zip”的资源提供了一个PHP类库,专门用于加密和解密数据。这个类库可以帮助开发者确保...在具体使用时,应遵循最佳实践,确保密钥安全,理解加密解密原理,以达到最佳的保护效果。
4. 对称加密与非对称加密:对称加密使用相同的密钥进行加解密,例如AES;非对称加密则使用一对公钥和私钥,公钥加密的数据只能用私钥解密,反之亦然,例如RSA。根据实际需求,源码可能会采用其中的一种或两种加密...
首先,让我们聚焦于C#的加密解密技术。C#提供了System.Security.Cryptography命名空间,该命名空间包含了各种加密和解密算法,如AES(高级加密标准)、DES(数据加密标准)、RSA(公钥加密算法)等。在这个项目中,...
3. **AES加密** - AES是目前最广泛使用的对称加密算法,它支持128、192和256位的密钥长度。在Ruby中,可以使用`OpenSSL::Cipher`类的`new`方法创建一个AES对象,然后进行加密和解密操作。 4. **RSA加密** - RSA是...
- **VBScript Crypto对象**:ASP中可以通过VBScript的Crypto对象实现加密,例如AES加密: ```vbscript Dim objCSP, strKey, strIV, strClearText, strCipherText Set objCSP = Server.CreateObject("System....
1. 加密方式:Navicat使用的是AES(Advanced Encryption Standard)高级加密标准,这是一种对称加密算法,以其高效和安全性著称。具体实现可能结合了自定义的密钥生成和加盐(salt)过程,以增加破解的难度。 2. ...
- 对于AES加密,Python的示例可能如下: ```python from cryptography.fernet import Fernet key = Fernet.generate_key() cipher_suite = Fernet(key) encrypted = cipher_suite.encrypt(b"敏感字符串") ...