-
帮忙看看,自己写的加密算法,有乱码问题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 的对称加密算法中可以添加新算法,以满足不同的加密需求。下面...
京东登陆加密算法供学习参考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...
非对称加密算法使用不同的密钥进行加密和解密,它可以解决对称加密算法中的密钥分发问题。常见的非对称加密算法有 RSA、 Elliptic Curve 等。 Hash(散列)算法是一种单向加密算法,无法反向解密。常见的 Hash 算法...
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 二。...
本资源包含300多种加密算法的C++实现,涵盖了DES、RSA、ECC以及Elgamal等经典算法,这些算法在现代信息安全中都有广泛应用。 1. **DES(Data Encryption Standard)**:DES是一种对称加密算法,由IBM开发并在1970...
非对称加密算法流程图,使用visio绘制。
在IT行业中,加密算法是确保数据安全的重要工具。本文将详细介绍标题中提到的"加密算法工具类",包括MD5、DES3、DES、AES、BASE64以及SHA这七种常见的加密算法,并讨论它们在Java环境中的应用。 首先,MD5(Message...
国际数据加密算法(International Data Encryption Algorithm,简称IDEA),是由瑞士联邦理工学院的Xuejia Lai和James Massey于1990年提出的一种高效、安全的对称加密算法。IDEA以其出色的加密强度和相对较低的计算...
RSA加密算法.ppt
本文将深入探讨文件加密的概念、常见的加密算法以及如何使用源代码实现文件加密。 首先,让我们理解文件加密的基本原理。文件加密是通过应用特定的数学算法,将明文(可读数据)转化为密文(不可读数据),这一过程...