我正在尝试将字符串中的十六进制值转换为 ASCII 值和 UTF8 值。但是当我执行以下代码时,它会打印出我作为输入给出的相同十六进制值
string hexString = "68656c6c6f2c206d79206e616d6520697320796f752e";
System.Text.UTF8Encoding encoding=new System.Text.UTF8Encoding();
byte[] dBytes = encoding.GetBytes(hexString);
//To get ASCII value of the hex string.
string ASCIIresult = System.Text.Encoding.ASCII.GetString(dBytes);
MessageBox.Show(ASCIIresult, "Showing value in ASCII");
//To get the UTF8 value of the hex string
string utf8result = System.Text.Encoding.UTF8.GetString(dBytes);
MessageBox.Show(utf8result, "Showing value in UTF8");
Run Code Online (Sandbox Code Playgroud) 我有一个包含十六进制值的字符串.现在我需要包含十六进制的字符串的内容作为字节变量.如何在不更改十六进制值的情况下执行此操作?
我想使用SHA1进行加密.我的代码是
public static string EncryptPassword(string password)
{
try
{
SHA1 sha1 = new SHA1Managed();
var bytehash = sha1.ComputeHash(new MemoryStream(new ASCIIEncoding().GetBytes(password)));
var stringhash = new ASCIIEncoding().GetChars(bytehash).ToString();
return stringhash;
}
catch (Exception ex)
{
// Some Exception....
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
它不起作用.它只返回System.Char [].我在这做错了什么
我们有一个 keyMaterial 十六进制字符串。看起来像这样
453F1287225ED9971D389A35F8D1032E7748DD0B88302F7C6C194626D4C8659B000000000E800000000200002000000047C2CA7B9A1F1C343CA228CC314A42F0 63A240E17624F886AF6CE9A135CAF65310000000D30489E536548F129E43240A26344811400000009EE2F5549B1447548ADADDD60A212C22DC2F9B2DC67D8E567B48B3 847A525244A2F575AAFFB3AECD0385612BE7C38CA403BE6B5DFA8BEDEFBFA35C5ECC1818AB
您可以看到整个文件。我们如何使用 C# 将这个十六进制代码转换为普通文本字符串?我有一些关于 C++ 的例子,但它对我没有帮助。你能给个建议吗?
该字符串的编码是16291388(但这不是问题的解决方案)
给定寄存器中的数字(二进制整数),如何将其转换为十六进制ASCII数字字符串?
数字可以存储在存储器中或即时打印,但存储在存储器中并一次打印通常更有效.(您可以修改存储的循环,而不是一次打印一个循环.)
我们能否有效地处理与SIMD并行的所有半字节?(SSE2或更高版本?)
下面是获取字符串的 Md5 值的以下 C# 代码
using System;
using System.Security.Cryptography;
using System.Text;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var urlPart = "dd5fad78903da9d3ce4905f8e731d6c4ýundefinedý3780534ý5";
Console.WriteLine("value= " + urlPart);
var md5val = md5(urlPart, Encoding.Default);
Console.WriteLine("md5= " + md5val);
}
public static string md5(string value, System.Text.Encoding encoding)
{
var buffer = encoding.GetBytes(value);
//Console.WriteLine("buffer= " + BitConverter.ToString(buffer));
MD5 md5Hasher = MD5.Create();
byte[] data = md5Hasher.ComputeHash(buffer);
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2")); …Run Code Online (Sandbox Code Playgroud) 如何将字节数组转换为字符串?我需要获取原始内容,例如"96 = A8 = FC- = A8 = FE",但是当我使用说Encoding.UTF8.GetString(字节)时,它返回"96 - ".谢谢!
我正在实现自己的 AES 代码,在解密过程中遇到一些问题。
byte[] output;
output = Encrypt(EncryptBufferInput);//encrypt "12",output[] is 300532188151293E4ACA3BA529B821C1
str.Append(Encoding.ASCII.GetString(output) );
output = Decrypt(DecryptBufferInput);//in hex, DecryptBufferInput should be "300532188151293E4ACA3BA529B821C1"
str.Append(Encoding.ASCII.GetString(output));//does not decrypt back to "12"
Run Code Online (Sandbox Code Playgroud)
因此,如果我尝试加密“12”,它会给出十六进制形式的“300532188151293E4ACA3BA529B821C1”值。当我尝试将其解密回“12”时,它给了我一个错误的值,因为 DecryptBufferInput 不是“300532188151293E4ACA3BA529B821C1”,而是其他一些值......只有前几个值是相同的。EncryptBufferInput 和 DecryptBufferInput 都是 byte[] 数组,我使用 Encoding.ASCII.GetBytes(string) 用相应的字符串(要加密的字符串或要解密的字符串)填充字节数组。我究竟做错了什么??
最近,我注意到SHA算法计算随机长度的哈希值.
HashAlgorithm provider;
provider = HashAlgorithm.Create("System.Security.Cryptography.SHA256");
while(!stackoverflow) {
Console.WriteLine(Encoding.UTF8.GetString(
provider.ComputeHash(Encoding.UTF8.GetBytes(
(new Random()).Next().ToString())))
.Count().ToString());
}
Run Code Online (Sandbox Code Playgroud)
输出:
29
29
30
29
29
30
29
31
29
29
32
29
30
28
...
Run Code Online (Sandbox Code Playgroud)
是否可以设置最大哈希长度?(可能使哈希无用..)或者我在计算哈希值时做错了什么?编码?
编辑:
上面的代码片段就是一个例子.我最终需要的是一个接受字符串的方法,计算字符串的散列并返回它.HashAlgorithm.ComputeHash取字节并返回字节,所以我使用UTF8.GetBytes()/ UTF8.GetString()进行转换,这似乎是一个巨大的错误.
首先,对于长篇文章感到抱歉,我想包括我的所有想法,以便你们更容易找到我的代码有什么问题.
我想将一个Hex字符串从C#应用程序传输到Java应用程序.但是,当我在两种语言中将相同的十六进制值转换为字节数组时,输出是不同的.
例如,相同的十六进制值给出
[101, 247, 11, 173, 46, 74, 56, 137, 185, 38, 40, 191, 204, 104, 83, 154]
Run Code Online (Sandbox Code Playgroud)
在C#和
[101, -9, 11, -83, 46, 74, 56, -119, -71, 38, 40, -65, -52, 104, 83, -102]
Run Code Online (Sandbox Code Playgroud)
在Java中
以下是我在C#中使用的方法:
public static string ByteArrayToHexString(byte[] byteArray)
{
return BitConverter.ToString(byteArray).Replace("-",""); //To convert the whole array
}
public static byte[] HexStringToByteArray(string hexString)
{
byte[] HexAsBytes = new byte[hexString.Length / 2];
for (int index = 0; index < HexAsBytes.Length; index++)
{
string byteValue = hexString.Substring(index * …Run Code Online (Sandbox Code Playgroud)