Ⅰ 請簡述什麼是序列密碼與分組密碼,它們的區別是什麼
序列密碼(Stream Cipher):
又稱流密碼,將明文消息按字元逐位進行加密。
分組密碼(Block Cipher):
在分組密碼中將明文消息分組(每組有多個字元),逐組進行加密。
Ⅱ 什麼是流加密
現代的文本加密主要還是對稱加密。非對稱加密太慢,而且也不適合對全文本加密,所以一般只是用在小數據加密上,比如加密文本對稱加密密鑰再傳給對方。然後文本本身還是用對稱加密。非對稱加密還有一個用處就是核實發件人身份。
現代主要有兩種對稱加密,數據流加密和數據塊加密。數據流加密就是用演算法和密鑰一起產生一個隨機碼流,再和數據流XOR一起產生加密後的數據流。解密方只要產生同樣的隨機碼流就可以了。數據塊加密把原數據分成固定大小的數據塊(比如64位),加密器使用密鑰對數據塊進行處理。一般來說數據流加密更快,但塊加密更安全一些。常見的加密法里,des和3des是使用最多的數據塊加密,aes是更新一些的塊加密法,rc4是數據流加密,等等。
二戰以後,大家一般都放棄了保護加密演算法的做法,因為太難了。而且數學上很強的演算法就這么幾種。所以現在都是公開演算法。這些演算法特性都不錯,如果一個密鑰長度不夠強了,只要加長密鑰長度就可以了。當然這種改變涉及改變加密硬軟體,在使用中有些不便,不過一般認為演算法本身還是夠強不必改變。
Ⅲ 流動密碼是什麼
每隔一段時間(一兩分鍾左右)會自動更改,或者每次刷新會更新的密碼
比如現在的網上銀行的u盾和網頁登陸時輸入的驗證碼都是流動密碼
Ⅳ 簡述一下流密碼的基本概念
流密碼也叫序列密碼,是一個隨時間變化的加密變換。具有轉換速度快、低錯誤傳播的優點,硬體實現電路更簡單;其缺點是:低擴散(意味著混亂不夠)、插入及修改的不敏感性。
Ⅳ 密碼技術的流密碼
流密碼,相對於區塊加密,製造一段任意長的鑰匙原料,與明文依位元或字元結合,有點類似一次墊(one-time pad)。輸出的串流根據加密時的內部狀態而定。在一些流密碼上由鑰匙控制狀態的變化。RC4是相當有名的流密碼。
密碼雜湊函數(有時稱作消息摘要函數,雜湊函數又稱散列函數或哈希函數)不一定使用到鑰匙,但和許多重要的密碼演算法相關。它將輸入資料(通常是一整份文件)輸出成較短的固定長度雜湊值,這個過程是單向的,逆向操作難以完成,而且碰撞(兩個不同的輸入產生相同的雜湊值)發生的機率非常小。
信息認證碼或押碼(Message authentication codes, MACs)很類似密碼雜湊函數,除了接收方額外使用秘密鑰匙來認證雜湊值。
Ⅵ 什麼是流密碼
比如你輸入了一個密碼 在你這邊的一個軟體給密碼加上其他的亂嗎 然後另一邊接受以後可以分離出亂嗎
反正就是加密手段了
Ⅶ 急求:流密碼的演算法,用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的話代碼會更簡單。
Ⅷ 流密碼學及其應用
序列密碼
6.1 流密碼的基本概念
6.1.1 流密碼的基本原理
6.1.2 同步流密碼
6.1.3 密鑰流產生器
6.2 移位寄存器與移位寄存器序列
6.3 線性反饋移位寄存器的表示
6.3.l 線性反饋移位寄存器的一元多項式表示
6.3.2 線性移位寄存器序列的周期性
6.3.3 線性移位寄存器的序列空間
6.4 線性移位寄存器序列的極小多項式
6.5 m序列的偽隨機性
6.6 流密碼的破譯
6.6.1 流密碼中的主要攻擊方法
6.6.2 m序列的破譯
Ⅸ 分組密碼和流密碼的差別是什麼意思
分組密碼與流密碼的不同之處在於輸出的每一位數字不是只與相應時刻輸入的明文數字有關,而是與一組長為m的明文數字
Ⅹ 什麼是流密碼、自毀生成程序、背包變體、零知識協議以及單一點
數字城堡看多了吧?很多翻譯都是很生硬的,不知道譯都怎麼翻譯的。
流密碼又稱序列密碼,它是將明文消息字元串逐位地加密成密文
自毀生成程序不知道
背包變體也不知道,嘿嘿
零知識證明是一種協議。所謂協議(Protocol),就是兩個或兩個以上的參與者為完成某項特定的任務而採取的一系列步驟,包括以下三個特徵:
1. 協議自始至終是有序的過程,每一步驟必須依次執行,在前一步驟沒有執行完之前,後面的步驟不可能執行。
2. 協議至少需要兩個參與者,一個人可以通過執行一系列的步驟來完成某項任務,但它不構成協議。
3. 通過執行協議必須能夠完成某項任務。
零知識證明必須包括兩個方面,一方為證明者,另一方為驗證者。證明者試
圖向驗證者證明某個論斷是正確的,或者證明者擁有某個知識,卻不向驗證者透露任何有用的消息。零知識證明目前在密碼學中得到了廣泛的應用,尤其是在認證協議、數字簽名方面,人們利用數字簽名設計出了大量優良的演算法。
用一個關於洞穴的故事來解釋零知識。洞穴中有一個秘密,知道咒語的人能打開 C 和D之間的密門,對其它人來說,兩條通道都是死胡同。Peggy 知道這個洞穴的秘密。她想對 Victor 證明這一點,但也不想泄露咒語。
下面是她如何使 Victor 相信的過程:
(1) Victor 站在A點。
(2) Peggy 一直走進洞穴,到達C點或者D點。
(3) 在 Peggy 消失在洞穴中後,Victor 走到B點。
(4) Victor 向 Peggy 喊叫,要她:從左通道出來,或者從右通道出來。
(5) Peggy 答應了,如果有必要她就用咒語打開密門。
Peggy 和 Victor 重復第(1)至第(5)步 n 次。
假設 Victor 有一個攝像機能記錄下他所看到的一切。他記錄下 Peggy 消失在洞中情景,記錄下他喊叫 Peggy 從他選擇的地方出來的時間,記錄下 Peggy 走出來。他記錄下所有的 n 次試驗。如果他把這些記錄給 Carol 看,她會相信 Peggy知道打開密門的咒語嗎?肯定不會。在不知道咒語的情況下,如果Peggy和Victor事先商定好 Victor 喊叫什麼,那將如何呢?Peggy 會確信也走進 Victor 叫她出來那條路,然後她就可以在不知道咒語的情況下在 Victor 每次要她出來的那條路上出來。或許他們不那麼做,Peggy 走進其中一條通道,Victor 發出一條隨機的要求。如果 Victor 猜對了,好極了。如果他猜錯了,他們會從錄像中刪除這個試驗。總之,Victor 能獲得一個記錄,它准確顯示與實際證明 Peggy 知道咒語的相同的事件順序。
這說明了兩件事。其一是 Victor 不可能使第三方相信這個證明的有效性;其二,它證明了這個協議是零知識的。在 Peggy 不知道咒語的情況下,Victor 顯然是不能從記錄中獲悉任何信息。但是,因為無法區分一個真實的記錄和一個偽造的記錄,所以 Victor 不能從實際證明中了解任何信息-它必是零知識。也就是說,Peggy 在向 Victor 證明的過程中沒有泄露任何有關秘密的知識,稱為零知識。
後面那個更不知道了。
原文分別是這些
stream ciphers
self-decimated generators
knapsack variants
zero knowledge protocols
unicity points
應該都是密碼學里的術語的。不好意思不能幫你,我也不清楚。