位与加密方式的速度非常快。若能保证其私有密钥的安全性,则位与加密的安全性很高,要破译几乎是不可能的。
但是位与加密的缺陷是灵活性较差,对私有密钥的管理是个头疼的问题。
在只需要简单粗暴的加密方式的环境下,这是个不错的选择。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
public class Encryptor {
public static byte[] encrypt(byte[] content, byte[] key) {
if (key.length == 0)
throw new IllegalArgumentException("key can not be empty!");
byte[] copy = Arrays.copyOf(content, content.length);
encrypt1(copy, key, 0);
return copy;
}
private static void encrypt1(byte[] content, byte[] key, int start) {
if (start == content.length)
return;// 递归结束条件
int end = start + key.length;
if (end >= content.length)
end = content.length;
for (int i = start; i < end; i++) {
content[i] ^= key[i - start];
}
encrypt1(content, key, end);
}
public static byte[] decrypt(byte[] content, byte[] key) {
// 异或的解密等于加密
return encrypt(content, key);
}
public static void encryptFile(File file, File output, byte[] privateKey)
throws IOException {
if(output.getParentFile()!=null)
output.getParentFile().mkdirs();
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(output);
byte[] buffer = new byte[8192];
int realSize = -1;
try {
while ((realSize = fis.read(buffer)) != -1) {
byte[] encrypted = encrypt(buffer, privateKey);
fos.write(encrypted,0,realSize);
}
}
finally {
fos.close();
fis.close();
}
}
public static void decryptFile(File file, File output, byte[] privateKey)
throws IOException {
encryptFile(file, output, privateKey);
}
public static void main(String[] args) throws Exception {
byte[] key = "kiss".getBytes();
byte[] content = "dddefr12345adkfjsadfjladskfj".getBytes();
byte[] test = encrypt(content, key);
System.out.println(new String(test));
test = decrypt(test, key);
System.out.println(new String(test));
// encryptFile(new File("test"), new File("test2"), key);
// decryptFile(new File("test2"), new File("test3"), key);
}
}
小弟潜水好久~出来透个气。呼呼
分享到:
相关推荐
在IT安全领域,加密技术是保护数据免受...Java提供了丰富的API支持这两种加密算法的实现,开发者可以根据具体需求选择合适的方式进行数据加密。在实际应用中,理解并熟练掌握这些加密技术,对于确保信息安全至关重要。
AES加密算法的核心特点在于它的分组加密方式,它将明文分为128位的数据块进行处理,同时密钥也可以是128位、192位或256位。在本案例中,我们关注的是128位的密钥和明文,这意味着每次加密或解密操作都会处理128位的...
常见的填充方式有PKCS#7,它保证了填充后的数据长度是64位的整数倍。在C++中,需要编写填充和解填充的函数。 7. **编码和解码**:在C++中,原始的二进制数据通常需要转换为字符字符串进行存储和传输,如使用hex编码...
然而,如果`GUID.java`中确实包含MD5生成方法,那么它的实现可能会提供一些关于如何生成"36位MD5加密字符"的线索。 总的来说,MD5在Java中是一个重要的加密和校验工具,通过`MessageDigest`类可以方便地生成32位的...
在这个项目中,我们将探讨如何使用MFC在VC++环境中实现DES加密和解密。 首先,DES是一种块加密算法,它将明文数据分为64位的块进行处理。但是,由于其中7位是奇偶校验位,实际有效密钥长度为56位。DES通过一系列...
在提供的压缩包文件中,`md5宏.xla`可能包含了一个宏的实现,而`MD5加密2种方式.xlsx`则可能是包含VBA函数或者演示如何使用VBA函数进行MD5加密的Excel工作簿。为了安全起见,使用外部来源的宏时应谨慎,确保其来源...
同样使用`crypto.createDecipheriv`创建解密器,参数与加密器相同: ```javascript const decipher = crypto.createDecipheriv('des-ede3', key, iv); ``` 5. **解密数据** 使用解密器将加密后的数据还原成...
在实现RSA加密时,需要注意以下几点: 1. 密钥长度:RSA的安全性依赖于密钥的长度,通常建议使用至少2048位的密钥以抵御当前的计算能力。 2. 密钥管理:私钥必须妥善保管,不能泄露,而公钥则可以分发,但需要防止...
本文将详细探讨几种简单但常用的加密方式,以及如何实现这些加密方法。 首先,我们来看MD5(Message-Digest Algorithm 5)哈希加密。MD5是一种广泛使用的哈希函数,它能够将任意长度的输入(也叫做预映射pre-image...
论文首先对现有的四种加密方式进行深入的研究和分析,这些加密方式包括: 1. **对称加密**:如DES(Data Encryption Standard,数据加密标准),它使用相同的密钥进行加密和解密。DES是一种较为经典的加密算法,但...
AES在2001年被美国国家标准与技术研究所(NIST)采纳为联邦信息处理标准(FIPS),取代了之前的DES加密标准。AES的核心在于一系列的替换和置换操作,包括字节替代、行移位、列混淆和轮密钥加。 **C语言实现**:...
对称加密是最基础的加密方式,使用相同的密钥进行加密和解密。Java中提供了`javax.crypto`包来支持此类算法,如: - **DES(Data Encryption Standard)**: 老一代的加密标准,安全性较低,但速度快。 - **3DES...
### MD5的16位与32位加密方式 在讨论中提到的“16位”和“32位”加密方式,实际上是指MD5散列值的不同表示形式,并非指加密强度或加密算法本身的变化。标准的MD5输出是一个128位的值,通常以32位十六进制数的形式...
学习和理解DES加密解密的实现,有助于深入理解密码学的基本原理,包括对称加密的运作方式,以及非线性和线性变换在加密算法中的应用。不过,需要注意的是,DES现在已经被视为较弱的加密标准,因为它只有56位的有效...
它不仅提供了多种加密方式,还支持数据安全传输等功能。在实际应用中,OpenSSL被广泛用于服务器端和客户端之间安全通信的建立。 #### 三、AES加密算法简介 AES(Advanced Encryption Standard,高级加密标准)是一...
这需要创建一个.NET类库项目,实现DES加密解密功能,然后在VBA中通过CreateObject或早绑定的方式调用这些函数。 以下是VB.NET中实现DES加密解密的简单示例代码: ```vbnet Imports System.IO Imports System....
在标题"MD5加密代码实现"中,我们理解到这个话题主要关注如何在实际编程中应用MD5算法进行数据的加密处理。虽然MD5不被认为是一种安全的加密算法,因为它容易遭受碰撞攻击,即找到两个不同的输入数据,但它们的MD5...
- 位操作:正确理解和运用位操作是实现MD5的关键,例如,向左或向右移动位,位与、位或、位异或等。 C语言实现的MD5加密代码可能包含以下几个部分: 1. 初始化函数:设置初始的中间变量值。 2. 内部处理函数:执行...