PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
公不
*停權中*
 

加入日期: Dec 2010
文章: 341
Question 請問 AES加密的實作

請問 AES加密

根據網路上的

在此段是開始加密
其中raw是要加密的內容
clear是private_key

引用:
private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/ZeroBytePadding");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(clear);
return encrypted;
}

如果我要將raw先填充一些東西

如下JavaScript的

JavaScript的block就是上面的raw

引用:
for (var i=0; i<8; i++) {
var block = new Array(32);

for (var j=0; j<32; j++)
{
block[j] = input_byte[i*32+j];
}
block = AES_Encrypt(block,private_key_byte);

for (var j=0; j<32; j++)
{
output_byte[i*32+j] = block[j];
}
}


請問我該如何加入?

謝謝
     
      
舊 2014-06-18, 08:11 PM #1
回應時引用此文章
公不離線中  
micall.lee
*停權中*
 
micall.lee的大頭照
 

加入日期: Jul 2013
文章: 331
我建議你要問應該去幾個專門討論程式設計的網站比較會有快一點的回應

藍色小舖、程式設計俱樂部應該比較多人

JAVA那邊好像也有不錯的論壇

微軟就不用說了 MSDN 那邊一堆

在這裡問我怕是會影響到你的專案進度
 
舊 2014-06-18, 08:15 PM #2
回應時引用此文章
micall.lee離線中  
789w
Major Member
 
789w的大頭照
 

加入日期: Mar 2011
文章: 108
這大3修資訊安全實做過的東西...
你的程度
__________________
舊 2014-06-18, 08:23 PM #3
回應時引用此文章
789w離線中  
crisliu2004
Major Member
 
crisliu2004的大頭照
 

加入日期: Dec 2004
文章: 208
看你的code很多函數都是內建的

看不出來裡面是什麼

AES有很多加密法 不是只有一種

小弟我只用過CBC法

看C語言,直接看source code會比較清楚

看過openssl、cyassl裡面都有
舊 2014-06-18, 08:33 PM #4
回應時引用此文章
crisliu2004離線中  
silent
Major Member
 

加入日期: Dec 2012
文章: 182
樓主之前面問過的也沒後續回應,到底有沒有解決問題也不說一下,

遇到問題就貼個ㄧ小段code,前言後語背景也不講一下,

都是這領域最令人討厭的行為,

去一些軟體或程式論壇看會不會有人理。
舊 2014-06-18, 08:57 PM #5
回應時引用此文章
silent離線中  
公不
*停權中*
 

加入日期: Dec 2010
文章: 341
抱歉


因為目前AES加密

是用javascript 來做AES

原始參考的是

http://point-at-infinity.org/jsaes/jsaes.js

裡面的範例去修改的

可是

手邊版本的

1.江AES_ExpandKey給關閉

2. 然後使用類似

代碼:
*    AES_Init();
 *
 *    var block = new Array(16);
 *    for(var i = 0; i < 16; i++)
 *        block[i] = 0x11 * i;
 *
 *    var key = new Array(32);
 *    for(var i = 0; i < 32; i++)
 *        key[i] = i;
 *
 *    AES_ExpandKey(key);
 *    AES_Encrypt(block, key);
 *
 *    AES_Done();


只是部分修改

但因為安全問題

想要改回直接使用JAVA

而JAVA部分

我是參考網路SimpleCrypto

http://www.androidsnippets.com/encryptdecrypt-strings

目前看到

代碼:
private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/ZeroBytePadding");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(clear);
return encrypted;
}
這邊是我可能需要修改的地方

因此請問該如何改?

謝謝
舊 2014-06-18, 09:02 PM #6
回應時引用此文章
公不離線中  
crisliu2004
Major Member
 
crisliu2004的大頭照
 

加入日期: Dec 2004
文章: 208
你可能要先搞懂

AES_Init();裡面做了什麼事

AES_ExpandKey(key);對傳進去的key做了什麼修改
AES_Encrypt(block, key);這裡用的encrypt法是哪種方法把key跟block結合

AES_Done();這又是幹什麼的? 通常block與key結合後應該就做完了
舊 2014-06-18, 09:51 PM #7
回應時引用此文章
crisliu2004離線中  
公不
*停權中*
 

加入日期: Dec 2010
文章: 341
引用:
作者crisliu2004
你可能要先搞懂

AES_Init();裡面做了什麼事

AES_ExpandKey(key);對傳進去的key做了什麼修改
AES_Encrypt(block, key);這裡用的encrypt法是哪種方法把key跟block結合

AES_Done();這又是幹什麼的? 通常block與key結合後應該就做完了

研究了2天

裡面還沒全懂

但是知道

AES_Init() ----->預先準備好要加密用的一些物件

AES_ExpandKey(key); 展開金鑰 用於加密時不要有重複 (但是前輩因為公司spec的需要 將此部份移除 )


AES_Encrypt(block, key);<----目前卡在 需要對block作額外的處理.填充額外的字元

AES_Done();整個加密完成.移除物件

昨天問的javascript

其實也是這個 '公司spec特殊'版的AES的需求

同樣用於塞入填充字元

因為改寫成java才知道用途

謝謝

還請提示該如何直接修正SimpleCrypto於

代碼:
private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/ZeroBytePadding");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(clear);
return encrypted;
}

部分

對於傳入的raw做部分的填充


謝謝
舊 2014-06-18, 10:22 PM #8
回應時引用此文章
公不離線中  
KKao
*停權中*
 

加入日期: Jan 2002
您的住址: 台北
文章: 172
居然可以在這裡看到有人用過 cyassl , 真是太訝異了

這我的team 有用,還實做了硬體加速器,pcdvd 果然是臥虎藏龍
舊 2014-06-18, 11:43 PM #9
回應時引用此文章
KKao離線中  
傳說
Amateur Member
 

加入日期: Jun 2002
您的住址: 太陽系
文章: 32
raw是要加密的內容
那你為什麼要在加密函數中向raw中加東西???
要加密的內容應該在呼叫加密函數前就處理完成

PS.你的軟體設計概念很有問題
動不動就到處加一些針對性的程式碼
萬一以後需要維護的話會很辛苦....
去Google看一下耦合度的概念吧
舊 2014-06-18, 11:50 PM #10
回應時引用此文章
傳說離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是09:43 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2024。