2012-04-15 43 views
1

我試圖使用通過POST方法從應用程序發送的密鑰來加密字符串。POST方法發送加密密鑰。但腳本無法正常工作幫幫我。使用C#進行POST加密和解密的方法使用C#

+2

「不能正常工作」是如何體現的?你有錯誤嗎?結果是否錯誤? *結果如何*錯了? – deceze 2012-04-15 08:52:32

+0

@cillosis請參閱編輯 – techno 2012-04-15 09:21:57

+0

@deceze請參閱編輯 – techno 2012-04-15 09:35:44

回答

1

它不起作用的原因是你的填充是錯誤的。 PKCS7是重複填充長度的字節值(即,如果填充2個字節,則爲00000010 00000010)。它不是字符串值「0202」,看起來沒有任何php函數可以正確執行此操作,所以我會使用不需要填充的操作模式。 OFB被c#和php支持。

你不能使用固定的IV。對於cbc模式,對於OFB來說,它是相當不安全的,它完全不安全。使用mcrypt_create_iv每次獲得一個新的隨機數。然後,當您發送它時,只需將IV添加到密文(不需要加密)即可。需要注意的是,您可能已經遇到的一個問題是,php使用字符串,而C#使用byts作爲IV,並且即使您現在也可能無法獲得正確的轉換。我可能會使用十六進制和函數來轉換/從那裏只是爲了確保。第二,當人們篡改數據時,您需要使用某些東西來檢測,否則他們可能會通過底層加密庫中的錯誤代碼/計時問題讀取密文。 Hmacs運行良好,並且支持here for php和c#。 HMAC你的IV +密文消息並在其前面輸出。另一方面,在相同的數據上運行c#等價函數,然後比較HMAC值。如果他們是一樣的,那麼你的安全,如果不是,拒絕。

+0

Thanks.I'm不是專家在加密或PHP.Can請給我一個例子 – techno 2012-04-16 14:58:00

+0

如果你只是想加密數據當您發送它時,請使用HTTPS/TLS。應該更容易,更安全 – imichaelmiers 2012-04-16 17:37:11

+0

號我不能這樣做。 – techno 2012-04-17 11:39:46

相關問題