2016-09-21 106 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; 
    } 
相关问题