-
帮忙看看,自己写的加密算法,有乱码问题5
private boolean encryptFile(String oldFile, String newFile) throws Exception { // 动态生成锁 KEYVALUE = getRandomString().getBytes(); FileInputStream in = new FileInputStream(oldFile); File file = new File(newFile); if (!file.exists()) file.createNewFile(); FileOutputStream out = new FileOutputStream(file); // 把锁放到文件头 out.write(KEYVALUE); // 其他部分开始加密 int c, pos, keylen, myFlag; myFlag = 0; pos = 0; keylen = KEYVALUE.length; byte buffer[] = new byte[BUFFERLEN]; while ((c = in.read(buffer)) != -1) { if (myFlag++ == 0) { for (int i = 0; i < c; i++) { buffer[i] ^= KEYVALUE[pos]; out.write(buffer[i]); pos++; if (pos == keylen) pos = 0; } } else { out.write(buffer, 0, c); } } out.flush(); in.close(); out.close(); return true; } private byte[] decryptFile(String oldFile) throws Exception { FileInputStream in = new FileInputStream(oldFile); List<byte[]> tmpBuffer = new ArrayList<byte[]>(); byte[] tmpB = new byte[prefixLength]; // 先取出来锁 in.read(tmpB, 0, prefixLength); KEYVALUE = tmpB; int c, pos, keylen, myFlag; myFlag = 0; pos = 0; keylen = KEYVALUE.length; byte buffer[] = new byte[BUFFERLEN]; while ((c = in.read(buffer)) != -1) { if (myFlag++ == 0) { byte[] tmpbuffer_2 = new byte[buffer.length]; for (int i = 0; i < c; i++) { buffer[i] ^= KEYVALUE[pos]; tmpbuffer_2[i] = buffer[i]; pos++; if (pos == keylen) pos = 0; } tmpBuffer.add(tmpbuffer_2); } else { tmpBuffer.add(buffer); } } in.close(); byte[] all = new byte[1024]; int maxsize = 0; for (byte[] b : tmpBuffer) { maxsize += b.length; if (all.length > maxsize) { System.arraycopy(b, 0, all, maxsize - b.length, b.length); } else { byte[] tempAll = new byte[all.length + 512]; System.arraycopy(all, 0, tempAll, 0, all.length); all = tempAll; System.arraycopy(b, 0, all, maxsize - b.length, b.length); } } return all; }
2012年6月10日 14:51
目前还没有答案
相关推荐
本文将深入探讨Android中RSA加密算法的使用,以及如何解决解密时可能出现的乱码问题。 首先,我们需要理解RSA算法的基本原理。RSA(Rivest-Shamir-Adleman)是一种公钥加密技术,它由一对密钥组成:公钥和私钥。...
OpenSSL 对称加密算法中如何添加新算法 OpenSSL 是一个开源的加密算法库,它提供了对称加密算法、非对称加密算法、哈希算法等多种加密算法。OpenSSL 的对称加密算法中可以添加新算法,以满足不同的加密需求。下面...
AES加密算法基于替换和置换的原理,它使用了固定的区块大小128位,并有三种密钥长度:128位、192位和256位。在AES加密过程中,数据被分为128位的数据块,然后经过多次的混合和轮变换,使得原始数据变得难以破解。 ...
这对于初学者和专业人士来说都是非常有价值的,因为加密算法的理解通常需要对数学和密码学有深厚的背景知识。 **关于Twofish加密算法** Twofish算法采用了128位的块大小和可变的密钥长度(支持128、192、256位),...
京东登陆加密算法供学习参考24小时内删除,请勿用于非法之事,否则后果自负与作者无关
C#加密算法汇总 C#加密算法 C#加密算法 C#加密算法
- **ElGamal**:一种基于离散对数问题的公钥加密算法,可用于加密和数字签名。 - **DSA(Digital Signature Algorithm)**:数字签名算法,专门用于生成和验证数字签名。 ### Hash算法 Hash算法是一种单向函数,...
首先,我们来看看几种常见的加密算法: 1. **DES(Data Encryption Standard)数据加密标准**:DES是一种对称加密算法,基于64位的数据块和56位的密钥进行操作。尽管DES现在被认为安全性较低,但由于其简单快速,仍...
在这个“Qt写的DES加密算法展示程序”中,我们将深入探讨DES(Data Encryption Standard)加密算法以及如何使用Qt来实现这一经典密码学技术。 **DES加密算法** DES是一种块加密算法,由IBM在1970年代初期开发,并...
DES(Data Encryption Standard)是一种经典的对称加密算法,由IBM公司于1970年代初期设计,1977年被美国国家标准局(NIST)采纳为联邦信息处理标准(FIPS PUB 46),并在全球范围内广泛使用。DES算法基于Feistel...
C#加密算法类库是一个专为.NET开发者设计的工具,它包含了多种常见的加密算法实现,以便在C#项目中方便地进行数据加密和解密。这个类库通常以.dll文件的形式提供,允许开发者通过引用该文件来直接使用其封装好的加密...
加密算法是确保信息安全的重要工具,它们可以将明文数据转化为看似随机的密文,防止未经授权的访问。以下是对VB6中几种常见加密算法的详细解释: 1. **DES(Data Encryption Standard)**:DES是一种古老的对称加密...
Java 凯撒加密算法 Java 凯撒加密算法是一种基于凯撒密码的加密算法,它在 Java 环境下实现了凯撒密码的加密过程。下面是该算法的详细介绍: 凯撒密码流程图 凯撒密码流程图是指凯撒密码的加密过程的图形表示。该...
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
非对称加密算法流程图,使用visio绘制。
在IT行业中,加密算法是确保数据安全的重要工具。本文将详细介绍标题中提到的"加密算法工具类",包括MD5、DES3、DES、AES、BASE64以及SHA这七种常见的加密算法,并讨论它们在Java环境中的应用。 首先,MD5(Message...
国际数据加密算法(International Data Encryption Algorithm,简称IDEA),是由瑞士联邦理工学院的Xuejia Lai和James Massey于1990年提出的一种高效、安全的对称加密算法。IDEA以其出色的加密强度和相对较低的计算...
加密算法_使用C++来实现md5加密算法