标签: tripledes

TripleDESCryptoServiceProvider - 容易遭到拒绝服务?

我们有一个遗留的ASP.NET站点,它使用加密方法:

http://www.codekeep.net/snippets/af1cd375-059a-4175-93d7-25eea2c5c660.aspx

当我们调用以下方法时,页面加载速度非常慢,最终返回Connection Reset:

Decrypt(" ", true);
Run Code Online (Sandbox Code Playgroud)

如果在后续页面请求中多次调用该方法,则应用程序池将关闭.

这发生在运行.NET framework v3.5的Windows 2008服务器上.

我把问题缩小到了TransformFinalBlock()电话.

注意:在Cassini上,我没有连接超时; 而是抛出以下异常:

System.Security.Cryptography.CryptographicException: Bad Data
Run Code Online (Sandbox Code Playgroud)

在其他字符串中调用Decrypt()会导致任何环境都没有问题.

为什么会这样?这是TripleDESCryptoServiceProvider中的错误吗?

显然,我可以过滤cipherString来拒绝""并避免这个特殊问题.但是,我担心我不怀疑的其他一些cipherString值会导致DoS.

更新2011.06.28

以下是重现该问题的最小代码:

// problem occurs when toEncryptArray is an empty array {}
      byte[] toEncryptArray = {};

      MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
      byte[] keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes("dummy_key"));
      hashmd5.Clear();

      TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
      tdes.Key = keyArray;
      tdes.Mode = CipherMode.ECB;
      tdes.Padding = PaddingMode.PKCS7;
      ICryptoTransform cTransform = tdes.CreateDecryptor();

      // the following line can crashes the ASP.NET Application Pool (may …
Run Code Online (Sandbox Code Playgroud)

encryption cryptography denial-of-service tripledes

5
推荐指数
1
解决办法
793
查看次数

PHP中的MACTripleDES

我试图获得相当于C#MACTripleDES类的MAC TripleDES .

我试过跟随mcrypt(),但这只是在TripleDES编码.我需要获得一个等效的MACTripleDES字符串作为在C#中生成的字符串来验证消息.

我也查看了PHP的hash_hmac()功能,但它没有提供使用TripleDES生成MAC的选项

php c# encryption tripledes

5
推荐指数
1
解决办法
653
查看次数

DUKPT 使用 Java 的实现过程以及如何将十六进制字符串转换为 DES 密钥(ByteArray)

我正在尝试实施 VISA DUKPT 算法以从事务 KSN 为每个事务生成唯一密钥。我一步一步地遵循了 ANS X9.24-1:2009 提供的信息,但我得到的 IPEK 与示例中提供的不同。对于加密/解密/加密,我使用的是充气城堡 API。示例中提供的密钥 (BDK) 是 0123456789ABCDEFFEDCBA9876543210 我知道这是一个双重加密密钥长度意味着

  • key1(加密 DES)= 0123456789ABCDEF
  • key2(解密 DES)= FEDCBA9876543210
  • key3(加密 DES)= key1 = 0123456789ABCDEF

我知道在使用 DES 时,您只能使用 8 字节密钥,因此 16 个十六进制字符串应转换为 8 字节数组。(我怀疑我是否在这里做某事。我从教程中获得了这部分代码)

public byte[] hexStringToByteArray(String hexstring) {
        int i = 0;
        if (hexstring == null || hexstring.length() <= 0) {
            return null;
        }
        String stringvector = "0123456789ABCDEF";
        byte[] bytevector = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
                             0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}; …
Run Code Online (Sandbox Code Playgroud)

java encryption tripledes

5
推荐指数
0
解决办法
6026
查看次数

零售MAC计算的C#实现(ISOIEC 9797-1 MAC算法3)

我正在尝试使用计算MAC

使用ISOIEC 9797-1 MAC算法3和分组密码DES,零IV(8字节)和1S09797-1填充方法2计算密码校验和.MAC长度必须是8字节

来自技术报告PM的机读旅行证件提供ICC只读访问版本:1.1日期:2004年10月1日.

我正在使用报告中的示例值:

Kenc:AB 94 FD EC F2 67 4F DF B9 B3 91 F8 5D 7F 76 F2

Kmac:79 62 D9 EC E0 3D 1A CD 4C 76 08 9D CE 13 15 43

eIFD:72 C2 9C 23 71 CC 9B DB 65 B7 79 B8 E8 D3 7B 29 EC C1 54 AA 56 A8 79 9F AE 2F 49 8F 76 ED 92 F2

但是,我没有得到相同的MAC,也不确定我需要怎么做.我的第一次尝试是:

                MACTripleDES mac = new System.Security.Cryptography.MACTripleDES(Kmac);
                mac.Initialize();
                mac.Padding = PaddingMode.None; …
Run Code Online (Sandbox Code Playgroud)

c# hash cryptography tripledes

5
推荐指数
2
解决办法
5170
查看次数

TripleDES 16字节不起作用

我正在尝试将一些项目迁移.net framework 4.5.net core.尝试迁移旧crypting/decrypting方法时会出现问题.该方法是一个TripleDES带有MD5哈希的密钥.MD5哈希总是返回16个字节.这个效果很好.net framework 4.5,但.net coreSystem.Security.Cryptography.Algorithms TripleDES只接受24个字节的密钥长度.在4.5中它接受16个字节或24个字节.有没有我可以尝试的变通方法?

后来编辑:初始化的时候到了TripleDes类调用新TripleDesImplementation这是这个.在此声明CNG不支持128位密钥.

.net c# cryptography tripledes .net-core

5
推荐指数
1
解决办法
1075
查看次数

java.lang.NoClassDefFoundError:org/apache/commons/codec/binary/Base64

管理员请不要将其标记为重复完整阅读我的问题.我正在加密和解密一些文本但是在运行在同一个文件中时,main运行正常,但是当我从外部调用它的加密和解密函数时.它在运行时发出错误.我附上了代码.包装desede;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

import security.SHA256Algo;
import shradhafinalwiddesign.UpdateFile;
import shradhafinalwiddesign.UserRegistration;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * Simple TripleDES Encrypt/Decrypt Test 
 * sha1, utf-8, no padding
 *
 * uses commons-codec-1.6 
 * javac -cp :commons-codec-1.6.jar TripleDESTest.java
 * java -cp :commons-codec-1.6.jar TripleDESTest 
 */

public class TripleDesDemo {


    public static void main(String[] args) throws Exception {

        String text = "textToEncrypt";
        UserRegistration user = new UserRegistration() ;
        user.setlUsername("tarunv") …
Run Code Online (Sandbox Code Playgroud)

java eclipse encryption tripledes

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

解密 TripleDES:指定的密钥是已知的弱密钥,无法使用

为什么此代码会返回弱键错误

static public byte[] TDESDecrypt(byte[] toDecrypt, byte[] key, CipherMode mode = CipherMode.ECB, PaddingMode padding = PaddingMode.None)
{
    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
    tdes.Key = key;
    tdes.Mode = mode;
    tdes.Padding = padding;
    ICryptoTransform cTransform = tdes.CreateDecryptor();
    byte[] resultArray = cTransform.TransformFinalBlock(toDecrypt, 0, toDecrypt.Length);
    tdes.Clear();
    return resultArray;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试执行“tdes.Key = key”行时,出现错误

deriveSessionKeyIS System.Security.Cryptography.CryptographyException:指定的密钥是 TripleDES 的已知弱密钥,无法使用

为什么?我尝试的密钥是随机的,但测试的密钥之一是FB13347FE570DC4FFB13347FE570DC4F。哪里有问题?

c# cryptography des key tripledes

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

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 = encoding.GetBytes(data);
  try { clear = des.CreateEncryptor().TransformFinalBlock(input, 0, input.Length); }
  finally
  {
    des.Clear();
    md5.Clear();
  }

  return Convert.ToBase64String(clear);
}
Run Code Online (Sandbox Code Playgroud)

这是我在PHP中提出的最好的东西:

//In PHP
// echo apiEncode("testing", "56dsfkj3kj23asdf83kseegflkj43458afdl");
// Results in: …
Run Code Online (Sandbox Code Playgroud)

php c# encryption cryptography tripledes

3
推荐指数
1
解决办法
5557
查看次数

使用php进行TRIPLE DES加密/解密

我在PHP中有这个TRIPLE DES ENCRYPTION CODE

    $encryption_key = "CE51E06875F7D964";
    $data='tokenNo=test&securityCode=111' ;
    echo $desEncryptedData = encryptText_3des($data, $encryption_key);//outputs 3des encrypted data

function encryptText_3des($plainText, $key) {
    $key = hash("md5", $key, TRUE); 
    for ($x=0;$x<8;$x++) {
        $key = $key.substr($key, $x, 1);
    }
    $padded = pkcs5_pad($plainText,
        mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC));
    $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_3DES, $key, $padded, MCRYPT_MODE_CBC));
    return $encrypted;
}
 function pkcs5_pad ($text, $blocksize)   
{
    $pad = $blocksize - (strlen($text) % $blocksize);
    return $text . str_repeat(chr($pad), $pad);
}
Run Code Online (Sandbox Code Playgroud)

我能够将数据加密为 xcFEvIdLXc2fjhG1i4iPOQu5L6ahxwZVucDOPqeMM2E=

现在我有了密钥,我能将这些数据解密为纯文本格式吗?

我试过这种方式

            $encryption_key = "CE51E06875F7D964";
        $data='xcFEvIdLXc2fjhG1i4iPOQu5L6ahxwZVucDOPqeMM2E=' ; //encrypted data
        echo $desEncryptedData …
Run Code Online (Sandbox Code Playgroud)

php encryption cryptography tripledes

3
推荐指数
3
解决办法
2万
查看次数

3DES 关键组件

我需要使用 3DES 加密/解密数据。与我共享的密钥的形式为;

组件 1 = 111111111111111111111111111111111

组件 2 = 22222222222222222222222222222222

KVC = ABCD1234

我需要从上述组件创建 3DES 密钥,或 K1、k2、k3 子密钥,

我知道子键长 16 个字节,但是这些长 32 个字节。

请分享创建 3DES 密钥的过程。

encryption 3des tripledes

3
推荐指数
1
解决办法
8660
查看次数

标签 统计

tripledes ×10

encryption ×7

cryptography ×6

c# ×5

php ×3

java ×2

.net ×1

.net-core ×1

3des ×1

denial-of-service ×1

des ×1

eclipse ×1

hash ×1

key ×1