簡體   English   中英

如何加密字符串數據,使其只能由駐留在其上的計算機解碼?

[英]how to encrypt string data so that it can only be decoded by the computer it resides on?

說我有從客戶端和服務器通過AJAX來回發送的字符串。

但是我希望在通過客戶端發送之前對其進行安全加密。 一旦將其放在服務器上,就應該對其進行解密和處理。

另外,密碼加密如何工作? 用戶注冊,並在輸入密碼后將其加密在服務器上並存儲在數據庫中。 用戶登錄時該怎么辦? 用戶密碼是否再次加密並與數據庫中的密碼匹配?

可以這樣使用非對稱算法

  1. 服務器生成一對私鑰/公鑰
  2. 客戶端(通過AJAX)詢問服務器其公鑰
  3. 客戶端使用公鑰加密數據
  4. 客戶端將加密的數據發送到服務器
  5. 服務器使用私鑰解密數據

所有這些事情都已經實現和測試,那么為什么要重新發明輪子而不直接使用HTTPS? 這將保證您在客戶端和服務器之間的任何交換都將被加密。

關於登錄問題

可以使用多種方式使用密碼。 最直接(但不太安全)的是密碼本身以明文形式發送到服務器的位置。 其他方法仍然需要發送密碼,但必須使用服務器的公共密鑰對其進行加密。 其他方法涉及身份驗證挑戰 ,服務器將向服務器發送一個隨機值/字符串,客戶端將其轉換為某種哈希函數(當然,將密碼作為密鑰),然后將轉換結果發送到服務器進行比較它可以自己計算相同的過程。 使用質詢的優勢在於,它可以防止中間人攻擊 ,因為每次身份驗證消息都是不同的(因此,固定消息將允許“中間人”重播與之關聯的已記錄數據包序列密碼傳遞,因此錯誤地標識了自己)

[措辭不佳] 主要問題上 (“只能在其所在的計算機上解碼” ...)

給定計算機上存在數個物理設備 (加密狗等)以及固有身份指示符(MAC地址),以及硬盤上的邏輯結構/內容(盡管我們使用的是“軟”軟件,即更容易實現)可移植區域...),可用於識別給定的主機,並因此提供必要的元素(鍵等)來解碼消息。

但是,我認為這個問題更為籠統:

兩台計算機可能秘密地共享一個密鑰,它們可以用來交換其他計算機無法(輕松)解密的信息。 這些密鑰可以放在外部,也可以在每個新會話進行時進行協商,首先使用公鑰加密,例如作為Diffie-Hellman密鑰交換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM