当前位置: 首页 > 知识库问答 >
问题:

Java到C#转换-base64字节数组pbkdf2EncryptionConfiguration

吴修洁
2023-03-14

本质上是将数据从基于java的系统转移到C#系统。

java端的代码对密码执行以下操作

----------密码-------

ByteBuffer byteBuffer = ByteBuffer.allocate( 2 * 4 + saltBytes.length + secretKeyBytes.length);

byteBuffer.putInt(pbkdf2EncryptionConfiguration.getKeySize());
byteBuffer.putInt(pbkdf2EncryptionConfiguration.getRounds());
byteBuffer.put(saltBytes);
byteBuffer.put(secretKeyBytes);

return Base64.encode(byteBuffer.array());

---------- 结束代码 -------

总之,一个以数字开头的字节数组有另一个数字,后面是盐,后面是秘密密钥

我的问题是,java字节与C#(有符号/无符号)不同,我本质上只想提取salt/密钥。

到目前为止,我在C#中的过程是

----------密码-------

byte[] actualPasswordByteArray = Convert.FromBase64String(hash);

int abc = BitConverter.ToInt32(items, 0);
int def = BitConverter.ToInt32(items, 4);

byte[] salt = new byte[SaltByteSize];
byte[] key = new byte[HashByteSize];

using (var deriveBytes = new Rfc2898DeriveBytes(password, 8, 128000))
{
    salt = deriveBytes.Salt;
    key = deriveBytes.GetBytes(leftOverBytes);
}

---------- 结束代码 -------

但我没有得到正确的价值观

共有1个答案

逑禄
2023-03-14
  • def保存回合数,但您将其硬编码为128000

因为你让盐随机生成,你现在有代码需要大约100ms来产生一个随机的答案,这个答案可以在大约10ns内产生。

字节流中的每一个值都是非常重要的。如果你发现自己硬编码了任何值,那么你就做错了。

 类似资料:
  • 问题内容: 需要: 我需要使用opencv 进行格式化,需要将图像从Java发送到C ++(opencv代码)。 我要做的步骤: 情况1: : 使用以下链接在c (opencv)中将mat编码为stringstream并在c (opencv)中将stringstream解码为mat,以便将base64编码从OpenCV cv :: Mat转换为std ::ifstream- 效果很好。 但是当我使

  • 我想通过JavaScript将“base64”字符串转换为字节数组。 我收到来自URL的字符串。 我想把字符串转换成字节数组。因为我需要这个字节数组来发送Rest APIendpoint。rest API content-type=application/octet-stream。

  • 我正在制作一个Android应用程序,它可以与蓝牙设备进行通信。我正在为选定的特征写一条特定的信息,如下所示: 我的转换函数如下所示: 我试图弄清楚为什么在这种情况下,我的转换输出是这样的: D/上传数据集:消息:�������������������� 这很奇怪,因为当我使用相同的转换函数来转换作为蓝牙通知接收到的值时,它工作得非常好。欢迎提出问题所在的任何建议

  • 问题内容: 我是Java新手。我收到字节数组中的UDP数据。字节数组的每个元素都具有十六进制值。我需要将每个元素转换为整数。 如何将其转换为整数? 问题答案: 样例代码:

  • 我一直在测试char casting,我经历了以下几点: 有人能解释为什么我在1中给字节添加了一个final时它工作得很好吗?

  • 问题内容: 我一直在测试字符转换,并经历了以下过程: 任何人都可以解释为什么当我在字节中添加final后在1中可以正常工作吗? 问题答案: 当变量为时,编译器将自动内联其值为1的值。该值可表示为,即: 相当于 实际上,根据本节中有关变量的部分,将其视为常量: 原始类型或类型的变量,即,用一个编译时间常量表达式(§15.28)初始化,被称为 恒定变量 。