小编Aeo*_*058的帖子

将WarpWallet的散列算法从javascript转换为C#

我正在尝试在C#中实现warpwallet代码.我正在使用cryptsharp进行scrypt和PBKDF2实现.但是,我似乎得到的结果与真实的网站不同.

这是我的代码:

static void Main(string[] args)
{
    string randomString = "mypassword";
    byte[] passwordBytes = Encoding.UTF8.GetBytes(randomString);
    byte[] passwordBytesScrypt = new byte[passwordBytes.Length + 1];
    Array.Copy(passwordBytes, 0, passwordBytesScrypt, 0, passwordBytes.Length);
    passwordBytesScrypt[passwordBytes.Length] = 0x1;

    string salt = "salt@gmail.com";
    byte[] saltBytes = Encoding.UTF8.GetBytes(salt);
    byte[] saltBytesScrypt = new byte[saltBytes.Length + 1];
    Array.Copy(saltBytes, 0, saltBytesScrypt, 0, saltBytes.Length);
    saltBytesScrypt[saltBytes.Length] = 0x1;

    byte[] scryptBytes = CryptSharp.Utility.SCrypt.ComputeDerivedKey(passwordBytesScrypt, saltBytes, 524288, 8, 1, null, 32);

    byte[] passwordBytesPBKDF2 = passwordBytesScrypt;
    passwordBytesPBKDF2[passwordBytes.Length] = 0x2;

    byte[] saltBytesPBKDF2 = saltBytesScrypt;
    saltBytesScrypt[saltBytes.Length] = 0x2;

    byte[] …
Run Code Online (Sandbox Code Playgroud)

javascript c# scrypt

9
推荐指数
1
解决办法
253
查看次数

string.replace vs StringBuilder.replace用于内存

我已经将一个流下载为一个大约36MB的byte []'raw'.然后我将其转换为字符串

string temp = System.Text.Encoding.UTF8.GetString(raw)
Run Code Online (Sandbox Code Playgroud)

然后我需要用"\ r \n"替换所有"\n",所以我尝试了

 string temp2 = temp.Replace("\n","\r\n")
Run Code Online (Sandbox Code Playgroud)

但它抛出了"内存不足"的例外.然后我尝试使用StringBuilder创建一个新字符串:

string temp2 = new StringBuilder(temp).Replace("\n","\r\n").toString()
Run Code Online (Sandbox Code Playgroud)

并没有抛出异常.为什么首先会出现内存问题(我这里只处理36MB),还有为什么StringBuilder.Replace()在另一个没有的情况下工作?

c# stringbuilder replace

8
推荐指数
1
解决办法
4513
查看次数

内存问题的数组与列表

由于您需要在创建时输入数组的长度,我认为它需要一个可靠,连续的内存块.List可以动态扩展,这是否意味着它不需要连续的内存分配?这是否意味着List不太可能抛出"Out of Memory"异常?

c# arrays list

4
推荐指数
1
解决办法
922
查看次数

将偏移量复制到C#中的文件偏移量

我有一堆非常大的视频文件(.ts),范围从3GB到10GB.其中很多都有一个特定的错误,我的解决方案是简单地删除包含错误的部分.我认识的开始和结束偏移,因为我想保留的部分,我希望从start_offset在主文件中简单地读取并复制到end_offset到在同一个文件夹中的新文件.

例如,我有主视频MAIN.ts,它是5.5GB.假设它有两个错误.我想保留偏移量(十进制,而不是十六进制)0到1174698823(错误开始前的字节)并将其保存到新文件PART1.ts.然后我想通过偏移4126897791(第二个错误开始)保留偏移1257553244(错误结束后的字节)并保存为PART2.ts.然后我需要将文件末尾的偏移量4207333028保存为PART3.ts.基本上我只删除了大约155MB的文件并将其分成三部分.如果我能真正做到削减,而不创建多个新文件,而是把它们添加对方为我去,然后写整个新的文件,这将是一个奖金(或我可以只使用copy /b更高版本).

我一直在研究文件流和字节数组,我知道2GB的限制.我如何解决这个问题,然后如果我想要保留的块的长度大于2GB,我该如何编写它?我不确定如何使用有限长度的缓冲区来执行此操作.如果可能的话,我也希望有一个进度条来显示已经写了多少.

任何帮助,将不胜感激.

c# copy file offset

0
推荐指数
1
解决办法
954
查看次数

标签 统计

c# ×4

arrays ×1

copy ×1

file ×1

javascript ×1

list ×1

offset ×1

replace ×1

scrypt ×1

stringbuilder ×1