【发布时间】:2013-07-19 05:19:04
【问题描述】:
我有一个使用 RijndaelManaged 加密 我的部分文件(因为它们是大文件)的 C# 应用程序。所以我将我的文件转换为字节数组并只加密其中的一部分。
然后我想使用 Java 解密文件。所以我必须解密文件的一部分(指那些字节),用 C# 加密。
问题来了。因为在 C# 中我们有 无符号字节,而在 Java 中我们有 有符号字节。所以我的加密和解密没有按照我想要的方式工作。
在 C# 中,我将加密字节和普通字节连接在一起,并使用File.WriteAllBytes 保存它们。所以我不能在这里使用 sbyte 或者我不知道该怎么做:
byte[] myEncryptedFile = new byte[myFile.Length];
for (long i = 0; i < encryptedBlockBytes.Length; i++)
{
myEncryptedFile[i] = encryptedBlockBytes[i];
}
for (long i = encryptedBlockBytes.Length; i < myFile.Length; i++)
{
myEncryptedFile[i] = myFileBytes[i];
}
File.WriteAllBytes(@"C:\enc_file.big", myEncryptedFile);
(在Java中也有完全相同的解密代码)
所以我的问题是:
- C# 中有 WriteAllsBytes 吗?
- 或者我可以在 Java 中使用 unsigned bytes 吗?
- 或者我的问题的任何其他解决方案?
【问题讨论】:
-
stackoverflow.com/questions/4266756/… 可能你可以将其转换为无符号
-
我以前检查过。不幸的是,它没有帮助。
-
这可能是相关的:stackoverflow.com/a/11039059/1149773@Natasha:简而言之:就这样使用它。
-
就像你写的那样。如果你想代表
{200, 201, 202},那么写{(byte)200, (byte)201, (byte)202},这与& 0xFF相反。当然不要超过 255,因为这些值不适合一个字节。 -
您是否真的在 Java 中尝试过,使用有符号字节?您在编写文件时遇到任何问题吗?如果符号对您来说是个问题,请尝试以十六进制而不是符号数字来检查您的数据。
标签: c# java cryptography unsigned signed