BouncyCastle JCE實踐(五) (轉)
對稱的實現
對稱/解密演算法在電子商務交易過程中存在幾個問題:
(1) 要求提供一條的渠道使通訊雙方在首次通訊時協商一個共同的金鑰。直接的面對面協商可能是不現實而且難於實施的,所以雙方可能需要藉助於和電話等其它相對不夠安全的手段來進行協商;
(2) 金鑰的數目難於管理。因為對於每一個合作者都需要使用不同的金鑰,很難適應開放社會中大量的資訊交流;
(3) 對稱加密演算法一般不能提供資訊完整性的鑑別。它無法驗證傳送者和接受者的身份;
對稱金鑰的管理和分發工作是一件具有潛在危險的和煩瑣的過程。對稱加密是基於共同保守秘密來實現的,採用對稱加密技術的貿易雙方必須保證採用的是相同的金鑰,保證彼此金鑰的是安全可靠的,同時還要設定防止金鑰洩密和更改金鑰的。
對稱解密的程式碼實現如下:
//從金鑰中讀金鑰
SecretKey key=null;
try
{InputStream keyFile=new ObjectInputStream(
new FileInputStream("c:安全檔案"+misClass.username+"對稱對稱金鑰yhb.des"));
key=(SecretKey)keyFile.readObject();
keyFile.close();
}
catch(FileNotFoundException ey1)
{
System.out.println("Error when read keyFile");
System.exit(0);
}
catch(Exception ey2)
{
System.out.println("error when read the keyFile");
System.exit(0);
}
//用key產生Cipher
Cipher cipher=null;
try
{
//設定演算法,應該與加密時的設定一樣
cipher=Cipher.getInstance("DES");
//設定解密
cipher.init(Cipher.DECRYPT_MODE,key);
}catch(Exception ey3)
{
System.out.println("Error when create the cipher");
System.exit(0);
}
//從對話方塊中取得要解密的檔案並解密
File file=new File(dirstring,string1);
String filename=file.getName();
try
{
//輸出流,請注意檔名稱的獲取
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(
"c:安全檔案)));
//輸入流
CipherInputStream in=new CipherInputStream(new BufferedInputStream(
new FileInputStream(file)),cipher);
int thebyte=0;
while((thebyte=in.read())!=-1)
{
out.write(thebyte);
}
in.close();
out.close();
}
catch(Exception ey5)
{
System.out.println("Error when encrypt the file");
System.exit(0);
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10794571/viewspace-974792/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- BouncyCastle JCE實踐(四) (轉)AST
- BouncyCastle JCE實踐(六) (轉)AST
- VC++ ADO開發實踐之五 (轉)C++
- CoreData實踐(五)——修改資料
- STL程式設計實踐五:巢狀式的型別宣告 (轉)程式設計巢狀型別
- Android入門(五):實踐技巧Android
- ROS小車實踐記錄(五)ROS
- 轉轉OLAP自助分析實踐
- 實踐法(轉載)
- 直播預約丨《實時湖倉實踐五講》第五講:實時湖倉領域的最/佳實踐解析
- 前沿課題研究與實踐___之五---金鑰託管及問題探索 (轉)
- kubernetes實踐之五:網路模型模型
- React 實踐專案 (五)Docker Nginx 部署 ReactReactDockerNginx
- 20211105BouncyCastleAST
- 直播轉點播實踐
- [轉]UNIX find命令實踐
- RMAN恢復實踐(轉)
- gRPC 認證的多種方式實踐(五)RPC
- 大資料專案實踐(五)——Hue安裝大資料
- 維護程式碼庫的五個精華實踐
- 前後端分離的思考與實踐(五)後端
- 軟體工程實踐(一) (轉)軟體工程
- 軟體工程實踐(二) (轉)軟體工程
- VC列印實踐淺談 (轉)
- 實施零信任網路訪問的五個最佳實踐
- 轉轉上門履約的LBS實踐
- Spring Boot中五個設計模式最佳實踐Spring Boot設計模式
- kubernetes實踐之五:Node節點安裝
- 【機器學習PAI實踐五】機器學習眼中的《人民的名義》機器學習AI
- Net8 使用BouncyCastle 生成自簽名證書AST
- C 程式設計最佳實踐(轉)程式設計
- 產品線實踐先導 (轉)
- 實踐中的增量計劃 (轉)
- lilo--實踐篇(FAQ) (轉)
- 轉轉倉儲自動化系統實踐
- 【原創】彼得德魯克《管理的實踐》札記(五)
- .NET雲原生應用實踐(五):使用Blazor WebAssembly實現前端頁面BlazorWeb前端
- 直播預約丨《實時湖倉實踐五講》第三講:實時湖倉在袋鼠雲的落地實踐之路