2016-09-21 139 views
0

我已經創建了一個WCF sercive,其中服務將來自客戶端應用程序的傳入字符串進行加密。如何將服務器的公鑰返回給客戶端,以便它可以解密從WCF服務返回的加密字符串? 我需要幫助。有沒有其他方法達到目的?hwo將公鑰從WCF服務器返回給客戶端

+0

你的想法是錯誤的(至少在安全實現方面)。您需要的是具有經第三方機構認證的證書的PKI系統。否則你的字符串並不真正安全。 – Kafros

回答

0

您可以使用JSON Web令牌(JWT)

智威湯遜通常有三部分:頭部,有效載荷和簽名。

header = '{"alg":"HS256","typ":"JWT"}' 

HS256表明此令牌是使用HMAC-SHA256

的有效載荷包含我們希望使權利要求籤字:

payload = '{"loggedInAs":"admin","iat":1422779638}' 

的簽名是通過編碼的頭base64url計算有效載荷並將它們連接起來作爲分隔符:

key   = 'secretkey' 
unsignedToken = encodeBase64(header) + '.' + encodeBase64(payload) 
signature  = HMAC-SHA256(key, unsignedToken) 

現在令牌的樣子:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI 

在我的WCF應用程序我使用JWT的.dll爲產生這樣的令牌。

public string GenToken() 
    { 
     byte[] key = new byte[]; 
     var payload= new Dictionary<string, object>() 
       { 
        { "idUsr", 1 }, 
        { "nameUsr", admin}, 
        {"accessTime",DateTime.UtcNow.AddMinutes(30)} 

       }; 
     string token = JWT.JsonWebToken.Encode(payload, key , JWT.JwtHashAlgorithm.HS256); 
        return token; 
    } 
相關問題