當前位置:首頁 » 密碼管理 » 位元組流加密演算法

位元組流加密演算法

發布時間: 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-05-20 16:01:22 瀏覽:435
wifi密碼忘了怎麼設置 發布:2025-05-20 15:47:56 瀏覽:882
寶馬x5買什麼配置的好 發布:2025-05-20 15:47:49 瀏覽:43
sql腳本加斜杠 發布:2025-05-20 15:40:21 瀏覽:621
搭建伺服器創建小程序 發布:2025-05-20 15:34:40 瀏覽:623
精通腳本 發布:2025-05-20 14:42:56 瀏覽:385
東方財富經典版如何更改密碼 發布:2025-05-20 14:42:43 瀏覽:944
砸口紅解壓 發布:2025-05-20 14:41:02 瀏覽:511
配置sp失敗怎麼辦 發布:2025-05-20 14:35:08 瀏覽:179
java學到什麼程度 發布:2025-05-20 14:31:54 瀏覽:480