如何从联系人的Live API的响应中将哈希转换为文本

How to convert hash into text from the response of Live API for Contacts

本文关键字:哈希 转换 文本 API 联系人 Live 响应      更新时间:2023-09-26

我已经集成了Live JS api来获取用户的Live联系人,它以哈希格式返回电子邮件(email_hash)。我如何转换成可读的文本,使用javascript或c#.net很多谢谢!

我有同样的问题,我找到了解决方案,所有你需要做的就是将以下范围添加到你请求的范围列表:"wl.contacts_email "

WL.login({scopes: ["wl.contacts_emails"]});

这样做之后,我不得不从我的配置文件中删除我的应用程序以重置所有范围并添加第二次我的应用程序。(但如果你不想询问所有已经使用你的应用程序的人,我可以重置秘密令牌来强制用户再次添加你的应用程序)。

最好的,蒂埃里

我同意Jon的观点。散列是单向的,也就是说,两个电子邮件地址可能共享相同的散列,尽管这种情况通常不太可能发生。它不是被设计为"解码"的,那是加密(所以回答他们是如何使用的)。关键是你可以对照一个或多个你已经拥有的电子邮件地址

微软在他们的网站上有一些示例代码,可能是也可能不是你要找的,但看起来你正在查询一个用户的联系人列表,他向你的网站提供了他的电子邮件地址。然后,微软允许你看到联系人的电子邮件列表。这样做是出于隐私考虑,这样你就不能收集某人联系人列表中的所有电子邮件。

关于如何在实践中实现它的一个例子,想想Facebook的好友查找功能。你提供一个电子邮件地址,接收一堆散列电子邮件地址,然后与你自己注册用户的散列电子邮件地址进行比较,寻找匹配。(FB的实际实现可能与我建议的略有不同。)

我不熟悉Windows Live SDK,但散列通常是单向表示。例如,取电子邮件地址的前两个字母将是一个散列——一个非常糟糕的散列,但仍然是一个散列。散列(在加密术语中)的意义在于能够快速确定两个源值是否可能相等,而无需存储/显示原始数据。

换句话说:假设我对我们正在讨论的哈希类型是正确的,那么您将无法返回到原始电子邮件地址。

编辑:假设它与这里描述的电子邮件哈希相同,它使用SHA-256,这是一种单向加密哈希。这里散列的目的是让您能够看到用户的联系人是否已经是您网站的用户(或其他),但不会以纯文本形式显示用户的联系人,否则会侵犯他们的隐私。