Tag: 三元组

C#和PHP中的TripleDES加密不一样(PKCS7,ECB)?

我花了几个小时试图解决这个问题,但我无法让它发挥作用。 我有一个C#加密例程,我需要在php中匹配。 我不能改变C#版本,这不是一个选项(第三方对此很坚定)。 这是C#代码: //In C# // Console.WriteLine(ApiEncode(“testing”, “56dsfkj3kj23asdf83kseegflkj43458afdl”)); // Results in: // XvHbR/CsLTo= public static string ApiEncode(string data, string secret) { byte[] clear; var encoding = new UTF8Encoding(); var md5 = new MD5CryptoServiceProvider(); byte[] key = md5.ComputeHash(encoding.GetBytes(secret)); TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider(); des.Key = key; des.Mode = CipherMode.ECB; des.Padding = PaddingMode.PKCS7; byte[] input = […]

PHP中的MACTripleDES

我试图获得相当于C# MACTripleDES类的MAC TripleDES。 我试过跟随mcrypt() ,但这只是在TripleDES中编码。 我需要获得一个等效的MACTripleDES字符串作为在C#中生成的字符串来validation消息。 我也查看了PHP的hash_hmac()函数,但它没有给出使用TripleDES生成MAC的选项

如何使用C#的三元运算符和两个字节值?

似乎没有办法在两个字节上使用C#的三元运算符,如下所示: byte someByte = someBoolean ? 0 : 1; 该代码目前无法使用“无法将源类型’int’转换为目标类型’byte’”进行编译,因为编译器将数字视为整数。 显然没有指定的后缀表示0和1是字节,因此唯一的解决方法是(a)将结果转换为字节或(b)使用if-else控件。 有什么想法吗?

这是三元运算符的合理使用吗?

是否有像代码那样的理解/可维护性问题 inVar1 == 0 ? NULL : v.push_back(inVar1); inVar2 == 0 ? NULL : v.push_back(inVar2); 等等。 可能令人困惑的想法是使用三元运算符来进行程序流而不是变量赋值,这是通常的解释。 我没有看到解决这种用法的工作中的编码标准,所以虽然我很乐意这样做,但我想知道是否有充分的理由不这样做。