3

我有一个 ruby​​ 客户端程序,它像这样用 string#crypt 加密密码

  encrypted = password.crypt(SALT)
  # removing first two characters which actually are the salt for safety
  return encrypted[2, encrypted.size - 2]

然后它将它发送到服务器,以与它存储的预加密字符串进行比较。我如何需要能够从 ac# 应用程序和 php 网页发送相同的加密密码,并且仍然能够从任何其他客户端使用相同的密码登录。

C# 和 php 中用于加密的等效代码是什么?

4

1 回答 1

6

C

  • 地穴(3)

    crypt() 是密码加密函数。它基于数据加密标准算法,其变化旨在(除其他外)阻止使用密钥搜索的硬件实现。

    key 是用户输入的密码。

    salt 是从集合 [a-zA-Z0-9./] 中选择的两个字符的字符串。该字符串用于以 4096 种不同方式之一扰乱算法。

红宝石

  • 地穴

    通过调用标准库函数 crypt 对 str 应用单向加密哈希。参数是盐字符串,它应该是两个字符长,每个字符都来自 [a-zA-Z0-9./]。

PHP

  • 地穴

    crypt() 将使用基于标准 Unix DES 的加密算法或系统上可能可用的替代算法返回加密字符串。

Python

  • crypt.crypt

    该模块实现了 crypt(3) 例程的接口,该例程是基于改进的 DES 算法的单向散列函数;

C#

.NET Framework 不包含用于 Unix crypt函数的 API,但这里有一些提供实现的库:

  • 加密API

    CryptAPI 是一个 C# 库,其中包含 .NET 框架(NT、NTLM、BlowFish、DES 和 MD5)中未实现的算法,链接和模拟在 C# 中重新编程的 crypt() unix 函数。主要目的是提供向后兼容性。

  • Unix crypt() 的 AC# 实现

于 2009-12-14T02:56:26.210 回答