如何调用Crypt()函数mono C#?

时间:2011-07-12 06:39:42

标签: mono

我需要在c#代码中使用unix Crypt(salt,key)函数进行加密 我的密码使用两个字符的盐和8个字符的密钥。 在C / C ++中,我们可以这样做但是如何在C#中执行此操作。 我在ubuntu linux中使用 Mono C#。 请建议。

2 个答案:

答案 0 :(得分:2)

这是使用unix crypt的完整工作程序:

using System;
using System.Runtime.InteropServices;

public class Test
{   
    [DllImport("libcrypt.so", EntryPoint = "crypt", ExactSpelling = true, CharSet = CharSet.Ansi)]
    public static extern IntPtr UnixCrypt([MarshalAs(UnmanagedType.LPStr)]string key, [MarshalAs(UnmanagedType.LPStr)]string salt); 

    public static void Main()
    {
        var ptrResult = UnixCrypt("test", "test2");
        Console.WriteLine(Marshal.PtrToStringAnsi(ptrResult));
    }
}

用给定的密钥和盐打印加密结果。当然你可以将UnixCrypt放在任何其他类中。为方便起见,您还可以创建方法:

public static string MyCrypt(string key, string salt)
{
    return Marshal.PtrToStringAnsi(UnixCrypt(key, salt));
}

答案 1 :(得分:0)

有一个类似的问题 - Encrypt and decrypt a string

有一篇关于Code Project的文章,它教你如何创建一个帮助类。