当前位置:首页 » 密码管理 » 字节流加密算法

字节流加密算法

发布时间: 2022-09-08 00:16:20

㈠ 急求:流密码的算法,用java

Java中的IO流使用的是Decorator设计模式
所以只要写两个装饰者类
覆盖write和read方法
在write前和read后对原数据进行一些处理(比如异或操作)就可以了
我吃过饭写个贴上来……

--------------------------------------------------------

// EncryptStream.java
import java.io.IOException;
import java.io.OutputStream;

/**
*
* 类型描述 加密
*
* @since 2009-5-22
* @author 何智刚
*
*/
public class EncryptStream extends OutputStream {

private byte key;
private OutputStream out;

/**
*
* @param key 密钥
* @param in 需要加密的流
*/
public EncryptStream(byte key, OutputStream out) {
this.key = key;
this.out = out;
}

@Override
public void write(int b) throws IOException {
out.write(b ^ key);
}

}

// DecryptStream.java
import java.io.IOException;
import java.io.InputStream;

/**
*
* 类型描述 解密流
*
* @since 2009-5-22
* @author 何智刚
*
*/
public class DecryptStream extends InputStream {

private byte key;
private InputStream in;

/**
*
* @param key 密钥
* @param in 需要解密的流
*/
public DecryptStream(byte key, InputStream in) {
this.key = key;
this.in = in;
}

@Override
public int read() throws IOException {
return in.read() ^ key;
}

@Override
public int read(byte[] b, int off, int len) throws IOException {
byte[] temp = new byte[b.length];
int c = in.read(temp, off, len);
for (int i = 0; i < b.length; i++) {
b[i] = (byte) (temp[i] ^ key);
}
return c;
}

}

// Client.java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class Client {

public static void main(String[] args) throws Exception {
byte key = 25;
encryptFile("要加密的文件.dat", "加密过的文件.dat", key);
decryptFile("加密过的文件.dat", "解密出来的文件.dat", key);
}

/**
*
* 方法描述 加密文件
*
* @param src 要加密的文件的路径
* @param des 加密过后的文件的存放路径
* @param key 密钥
* @throws Exception
*
* @变更记录 2009-5-22 下午12:42:25 何智刚 创建
*
*/
public static void encryptFile(String src, String des, byte key)
throws Exception {
InputStream in = new FileInputStream(src);
OutputStream out = new EncryptStream(key, new FileOutputStream(des));
byte[] buf = new byte[8192];
int c;
while ((c = in.read(buf)) > 0) {
out.write(buf, 0, c);
}
in.close();
out.flush();
out.close();
}

/**
*
* 方法描述 解密文件
*
* @param src 要解密的文件的路径
* @param des 解密过后的文件的存放路径
* @param key 密钥
* @throws Exception
*
* @变更记录 2009-5-22 下午12:43:04 何智刚 创建
*
*/
public static void decryptFile(String src, String des, byte key)
throws Exception {
InputStream in = new DecryptStream(key, new FileInputStream(src));
OutputStream out = new FileOutputStream(des);
byte[] buf = new byte[8192];
int c;
while ((c = in.read(buf)) > 0) {
out.write(buf, 0, c);
}
in.close();
out.flush();
out.close();
}

}

-----------------------------------------------
我在例子里没有用BufferedStream,而是自己创建了个byte[]做缓冲区,因为这样性能更好。用BufferedStream的话代码会更简单。

㈡ java 对文件逐字节加密

fis应该可以转化为byet[]吧 这样应该可以逐字节加密了...
你真的要让加密文件包含 内容 + 密钥 + 加密算吗吗? 那byte[] 可以append一下就加上了,,,,

㈢ rsa算法加密算法的实现问题

RSA加密是把数据当作数值运算,而且会进行大数运算,加密算法很慢,建议加密小的数据可采用。你把任何的数据流当字节流来读取,那每个字节就是就是一个数了,分组取决你使用的模长,比如rsa1024,那么每次分片可加密数据的大小是,1024/8-11=117个,为什么减11参见RSA理论。解密每片是1024/8=128个。

㈣ 有哪些视频加密算法

全部加密
使用标准加密算法(比如DES3)加密整个视频流,其中,P是原始的多媒体数据,p0是经过压缩或不压缩的数据,C是使用加密算法加密过的数据,K是加密密钥。解密过程与加密过程相对陈,这种加密方法将视频比特流视作传统的文本数据,没有利用视频压缩后数据的特殊结构。这种方法显然计算量巨大,很难保证视频的实时传输

选择性加密
选择性加密是基于信源特征的视频加密方法的主要发展方向。其加密模型如下图所示。选择性加密可分为加班的选择性加密算法、仅加密头部信息的方法和SECMPEG比特流方法。

Zigzag置乱算法
Zigzag置乱算法的基本思想是使用一个随机的置乱序列来代替Zigzag扫描顺序,来将各个8*8块的DCT系数映射成一个1*64矢量。
Zigzag置乱算法速度很快,不影响视频的实时传输。但是经过加密的视频压缩后码流大下显着增加。因为运用非Zigzag顺序将8*8块映射到1*64矢量,将会极大减少连续零的个数,从而减少压缩率。视频流大小经过加密后增加可达46%。考虑到MPEG视频数据量的巨大,这种大小增量是很难容忍的。

改变Huffiman码表算法
改变Huffiman码表的视频加密算法原理是:对于熵编码采用Huffiman编码的视频标准,将通用Huffiman码表修改后使用,修改后的特殊Huffiman码表作为密钥。非接收方无此特殊码表,就无法正确解密视频信息。该算法完全不增加计算量。适用于使用Huffiman编码的各种视频和图像压缩编码标准和算法。其缺点是安全性较差。

纯置乱算法
纯置乱算法简单的置乱字节流。置乱密码序列的基数是根据密级和应用需求动态可变的。比如我们可以用64个数的置乱序列或一个长的I帧的1/8的置乱序列。这种算法的问题在于它对已知明文攻击非常脆弱。一旦通过比较密文和已知原始帧数据,获取了随机置乱序列,所有的帧将很容易被破解。为了找出随机置乱序列,我们需要已知随机序列长度倍数大小的明文。然而注意到MPEG数据流的单一性和帧大小在同一个数量级上,因此,基于香农理论,如果已知一个I帧数据足以破译整个随机序列。

如果你要是加密视频的话最简单的方法其实是下载一个视频加密软件就可以了,比如超级加密3000、金钻视频加密专家都可以加密视频的。

㈤ delphi实现DES字节流加密,该怎么解决

在 CnPack 提供的源代码包里,提供了 des 加解密单元文件,提供了以下四个功能函数:

function DESEncryptStr(Str, Key: AnsiString): AnsiString;
{* 传入明文与加密 Key,DES 加密返回密文,
注:由于密文可能含有扩展 ASCII 字符,因此在 DELPHI 2009 或以上版本中,请用
AnsiString 类型的变量接收返回值,以避免出现多余的 Unicode 转换而导致解密出错}

function DESDecryptStr(Str, Key: AnsiString): AnsiString;
{* 传入密文与加密 Key,DES 解密返回明文}

function DESEncryptStrToHex(Str, Key: AnsiString): AnsiString;
{* 传入明文与加密 Key,DES 加密返回转换成十六进制的密文}

function DESDecryptStrFromHex(StrHex, Key: AnsiString): AnsiString;
{* 传入十六进制的密文与加密 Key,DES 解密返回明文}

㈥ 除了漏格法还有什么方法可以加密、解密信息

可以直接写提取原始文件的工具的,提取后就不用播放密码了啊。

㈦ 该怎么解决,delphi实现DES字节流加密

在 CnPack 提供的源代码包里,提供了 des 加解密单元文件,提供了以下四个功能函数:

function DESEncryptStr(Str, Key: AnsiString): AnsiString;
{* 传入明文与加密 Key,DES 加密返回密文,
注:由于密文可能含有扩展 ASCII 字符,因此在 DELPHI 2009 或以上版本中,请用
AnsiString 类型的变量接收返回值,以避免出现多余的 Unicode 转换而导致解密出错}

function DESDecryptStr(Str, Key: AnsiString): AnsiString;
{* 传入密文与加密 Key,DES 解密返回明文}

function DESEncryptStrToHex(Str, Key: AnsiString): AnsiString;
{* 传入明文与加密 Key,DES 加密返回转换成十六进制的密文}

function DESDecryptStrFromHex(StrHex, Key: AnsiString): AnsiString;
{* 传入十六进制的密文与加密 Key,DES 解密返回明文}

㈧ md5加密的算法是否只有一种

MD5算法基本上都是一样的,有一个标准的算法,但是不排除部分人重写MD5的算法导致无法验证。
一般来说,MD5的核心算法都是一样的,会把信息加密成一个128位的2进制字节流,然后把2进制字节流转为16进制的字符串。理论上来说,二进制字节流转16进制字符串这一步有可能会因为不同的人不同。但是如果按标准的话,MD5加密应该是一致的。
为了安全,你可以把自己的MD5加密方法提供给对方。

热点内容
随机启动脚本 发布:2025-07-05 16:10:30 浏览:528
微博数据库设计 发布:2025-07-05 15:30:55 浏览:25
linux485 发布:2025-07-05 14:38:28 浏览:305
php用的软件 发布:2025-07-05 14:06:22 浏览:756
没有权限访问计算机 发布:2025-07-05 13:29:11 浏览:432
javaweb开发教程视频教程 发布:2025-07-05 13:24:41 浏览:707
康师傅控流脚本破解 发布:2025-07-05 13:17:27 浏览:243
java的开发流程 发布:2025-07-05 12:45:11 浏览:687
怎么看内存卡配置 发布:2025-07-05 12:29:19 浏览:285
访问学者英文个人简历 发布:2025-07-05 12:29:17 浏览:835