如何对 MD5 哈希进行 XOR 运算并返回 32 个字符的字符串?

如何通过使用可变大小的字符串(不大于 32 个字符)对其进行异或来进一步加密 MD5 哈希?

我希望 XOR 的结果也是 32 个字符的字符串。

到目前为止我尝试过的是:

  • 将 md5 字符串转换为二进制
  • 将第二个字符串转换为二进制
  • 用 0(向左)填充第二个二进制文件,直到两个二进制文件的长度相等
  • 迭代二进制表示并对它们进行异或
  • 将异或结果转换为字符串

方法可能是错误的,我不知道该怎么做。我的问题是,在转换XOR的结果时,它不是32字符长的字符串,正如我希望的那样。

示例代码(在本例中为等长字符串):

class Program
{
    static void Main(string[] args)
    {

        var md51 = ToBinary(ConvertToByteArray(CalculateMD5Hash("Maaa"), Encoding.ASCII));
        var md52 = ToBinary(ConvertToByteArray(CalculateMD5Hash("Moo"), Encoding.ASCII));

        List<int> xoredResult = new List<int>();

        for (int i = 0; i < md51.Length; i++)
        {
            var string1 = md51[i];
            var string2 = md52[i];
            var xor = string1 ^ string2;
            xoredResult.Add(xor);
        }

        var resultingString = string.Join("", xoredResult);
        Console.WriteLine(resultingString.Length);

        var data = GetBytesFromBinaryString(resultingString);
        var text = Encoding.ASCII.GetString(data);

    }

    public static byte[] ConvertToByteArray(string str, Encoding encoding)
    {
        return encoding.GetBytes(str);
    }

    public static String ToBinary(Byte[] data)
    {
        return string.Join("", data.Select(byt => Convert.ToString(byt, 2).PadLeft(8, '0')));
    }

    public static Byte[] GetBytesFromBinaryString(String binary)
    {
        var list = new List<Byte>();

        for (int i = 0; i < binary.Length; i += 8)
        {
            String t = binary.Substring(i, 8);

            list.Add(Convert.ToByte(t, 2));
        }

        return list.ToArray();
    }

    public static string CalculateMD5Hash(string input)
    {

        // step 1, calculate MD5 hash from input

        MD5 md5 = System.Security.Cryptography.MD5.Create();

        byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);

        byte[] hash = md5.ComputeHash(inputBytes);

        // step 2, convert byte array to hex string

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < hash.Length; i++)

        {

            sb.Append(hash[i].ToString("X2"));

        }

        return sb.ToString();

    }
}
斯科特·张伯伦

用本质上是随机字节的字符串异或不能保证给你一个有效的字符串作为输出。var text = Encoding.ASCII.GetString(data);可能会失败,因为您以字节形式向它传递了一个无效的字符串。您必须使用类似的东西var text = Convert.ToBase64String(data)才能表示随机数据而不会在此过程中丢失信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为同一个字符串获得两个不同的 md5 哈希结果?

来自分类Dev

如何直接在终端中获取字符串的MD5哈希?

来自分类Dev

如何直接在终端中获取字符串的MD5哈希?

来自分类Dev

Python:对字符串中的每个字符进行XOR

来自分类Dev

如何仅使用 Ruby 中字符串的前 5 个字符对数组进行排序?

来自分类Dev

如何从python中的字符串中提取32个字符串?

来自分类Dev

Scala单线从字符串生成MD5哈希

来自分类Dev

计算字符串的MD5哈希

来自分类Dev

在Ruby应用程序中,如何匹配C#中Unicode字符串的MD5哈希的输出?

来自分类Dev

如何在字典中对 KeyValue 进行排序并返回一个字符串

来自分类Dev

在PowerShell字符串中的32个字符+空格后返回新行

来自分类Dev

如何对字符串数组的每个字符串进行排序

来自分类Dev

字符串中的单词匹配后如何对整个字符串进行grep

来自分类Dev

32个字符串如何变为46个字节?

来自分类Dev

32个字符串如何变为46个字节?

来自分类Dev

PHP crypt()-返回的md5哈希

来自分类Dev

如何使用递归来混合2个字符串并以1个“隔行”字符串返回两个字符串?

来自分类Dev

我可以对base32 / 64编码的MD5哈希进行alpha排序吗?

来自分类Dev

我可以对base32 / 64编码的MD5哈希进行alpha排序吗?

来自分类Dev

如何从unicode字符串中获取单个字符并进行比较,打印?

来自分类Dev

如何将字符串与多个字符进行比较c ++

来自分类Dev

如何使函数返回给定字符串中每个字符的 ascii 值

来自分类Dev

Win32 MD5哈希器的奇怪行为

来自分类Dev

如何在python中将md5 32字节哈希转换为相应的sha256

来自分类Dev

用于MD5哈希的Python + JSON序列化-如何保证两个等效的对象将序列化为完全相同的字符串?

来自分类Dev

如何在扑镖中从两个字符串生成一个字符串/哈希

来自分类Dev

如何编写返回字符串列表中超过10个字符的字符串计数的程序

来自分类Dev

如何将哈希图值转换为单个字符串

来自分类Dev

已进行 md5 散列的字符串的 MD5 散列:语法错误

Related 相关文章

  1. 1

    如何为同一个字符串获得两个不同的 md5 哈希结果?

  2. 2

    如何直接在终端中获取字符串的MD5哈希?

  3. 3

    如何直接在终端中获取字符串的MD5哈希?

  4. 4

    Python:对字符串中的每个字符进行XOR

  5. 5

    如何仅使用 Ruby 中字符串的前 5 个字符对数组进行排序?

  6. 6

    如何从python中的字符串中提取32个字符串?

  7. 7

    Scala单线从字符串生成MD5哈希

  8. 8

    计算字符串的MD5哈希

  9. 9

    在Ruby应用程序中,如何匹配C#中Unicode字符串的MD5哈希的输出?

  10. 10

    如何在字典中对 KeyValue 进行排序并返回一个字符串

  11. 11

    在PowerShell字符串中的32个字符+空格后返回新行

  12. 12

    如何对字符串数组的每个字符串进行排序

  13. 13

    字符串中的单词匹配后如何对整个字符串进行grep

  14. 14

    32个字符串如何变为46个字节?

  15. 15

    32个字符串如何变为46个字节?

  16. 16

    PHP crypt()-返回的md5哈希

  17. 17

    如何使用递归来混合2个字符串并以1个“隔行”字符串返回两个字符串?

  18. 18

    我可以对base32 / 64编码的MD5哈希进行alpha排序吗?

  19. 19

    我可以对base32 / 64编码的MD5哈希进行alpha排序吗?

  20. 20

    如何从unicode字符串中获取单个字符并进行比较,打印?

  21. 21

    如何将字符串与多个字符进行比较c ++

  22. 22

    如何使函数返回给定字符串中每个字符的 ascii 值

  23. 23

    Win32 MD5哈希器的奇怪行为

  24. 24

    如何在python中将md5 32字节哈希转换为相应的sha256

  25. 25

    用于MD5哈希的Python + JSON序列化-如何保证两个等效的对象将序列化为完全相同的字符串?

  26. 26

    如何在扑镖中从两个字符串生成一个字符串/哈希

  27. 27

    如何编写返回字符串列表中超过10个字符的字符串计数的程序

  28. 28

    如何将哈希图值转换为单个字符串

  29. 29

    已进行 md5 散列的字符串的 MD5 散列:语法错误

热门标签

归档