标签: 3des

如何在Java中使用3DES加密/解密?

我编写的每个使用3DES在Java中编码字符串的方法都无法解密回原始字符串.有没有人有一个简单的代码片段,只能编码,然后将字符串解码回原始字符串?

我知道我在这段代码中某处犯了一个非常愚蠢的错误.以下是我到目前为止一直在使用的内容:

**注意,我没有从encrypt方法返回BASE64文本,而且我在解密方法中不是base64 un-encoding,因为我试图看看我是否在BASE64部分拼图中犯了错误.

public class TripleDESTest {

    public static void main(String[] args) {

        String text = "kyle boon";

        byte[] codedtext = new TripleDESTest().encrypt(text);
        String decodedtext  = new TripleDESTest().decrypt(codedtext);

        System.out.println(codedtext);
        System.out.println(decodedtext);
    }

    public byte[] encrypt(String message) {
        try {
            final MessageDigest md = MessageDigest.getInstance("md5");
            final byte[] digestOfPassword = md.digest("HG58YZ3CR9".getBytes("utf-8"));
            final byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);
            for (int j = 0,  k = 16; j < 8;)
            {
                keyBytes[k++] = keyBytes[j++];
            }

            final SecretKey key = new SecretKeySpec(keyBytes, "DESede");
            final IvParameterSpec …
Run Code Online (Sandbox Code Playgroud)

java encryption 3des

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

如何使用RSA加密C#中的文件(大数据)

我是加密新手.我需要实现非对称加密算法,我认为它使用私钥/公钥.我开始使用RSACryptoServiceProvider的示例.加密的小数据是可以的.但是当在相对较大的数据"2行"上使用它时,我得到异常CryptographicException"Bad Length"!

//Create a new instance of RSACryptoServiceProvider.
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
{

    //Import the RSA Key information. This only needs
    //toinclude the public key information.
    //RSA.ImportParameters(RSAKeyInfo);
    byte[] keyValue = Convert.FromBase64String(publicKey);
    RSA.ImportCspBlob(keyValue);

    //Encrypt the passed byte array and specify OAEP padding.  
    //OAEP padding is only available on Microsoft Windows XP or
    //later.  
    encryptedData = RSA.Encrypt(DataToEncrypt, DoOAEPPadding);
}
Run Code Online (Sandbox Code Playgroud)

然后我找到了一些使用CryptoStream加密大数据(或文件)的样本,并且只使用DES或3DES等对称算法,它们具有CreateEncryptor函数,将ICryptoTransform作为CryptoStream构造函数的输入之一返回!

CryptoStream cStream = new CryptoStream(fStream,
                new TripleDESCryptoServiceProvider().CreateEncryptor(Key, IV),
                CryptoStreamMode.Write);
Run Code Online (Sandbox Code Playgroud)

使用RSA加密文件的方法是什么?

c# 3des cryptography rsa encryption-asymmetric

41
推荐指数
5
解决办法
5万
查看次数

3DES密钥大小在C#.Net中很重要

下面的代码在c#.NET中运行良好

byte[] key = Encoding.ASCII.GetByte("012345678901234567890123"); //24characters        
byte[] plainText = Encoding.ASCII.GetBytes("lasaa"); 
TripleDES des = TripleDES.Create();
des.Key = key;
des.Mode = CipherMode.CBC;
ICryptoTransform ic = des.CreateEncryptor();
byte[] enc = ic.TransformFinalBlock(plainText, 0, plainText.Length);
MessageBox.Show(UTF8Encoding.UTF8.GetString(enc));
Run Code Online (Sandbox Code Playgroud)

我对上述问题是......

  1. 如何指定KeySize?如果我使用des.KeySize= 128192256它给

指定的密钥不是此算法的有效大小

  1. 如果我通过添加更多来改变键中的字符长度(例如:40个字符).它给出了错误

指定的密钥不是此算法的有效大小

我想知道为什么会这样?

c# encryption 3des

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

php:mcrypt_encrypt到openssl_encrypt,以及OPENSSL_ZERO_PADDING问题

对于给定的$ key,$ message和$ iv,我有这个mcrypt_encrypt调用:

$string = mcrypt_encrypt(MCRYPT_3DES, $key, $message, MCRYPT_MODE_CBC, $iv);
Run Code Online (Sandbox Code Playgroud)

我想将mcrypt_encrypt呼叫改为$key一个,以便将来证明这一点.

通过具有$message$ivmcrypt_encrypt我得到的更多的类似的反应,但不完全相同.还有其他方法可以称之为完美匹配吗?

我正在为lorem-ipsum openssl_encrypt+ $mode = 'des-ede3-cbc'组合得到这个(base64_encoded),所以我开始相信一个函数或另一个函数在加密前稍微填充消息...

对于mcrypt

"Y + JgMBdfI7ZYY3M9lJXCtb5Vgu + rWvLBfjug2GLX7uo ="

为了openssl

"Y + JgMBdfI7ZYY3M9lJXCtb5Vgu + rWvLBvte4swdttHY ="

尝试使用$ options传递OPENSSL_ZERO_PADDING,但传递除1 之外的任何内容(OPENSSL_RAW_DATAtrue)会导致空字符串...

既不使用$mode = '3DES';也不$options = true工作... :(

还有其他线索吗?我正在使用"OpenSSL 1.0.2g 2016年3月1日".

已经读过这个 q&a,但它对我没有帮助.不是唯一 一个有填充问题的人,但到目前为止还没有解决方案.(第二个答案谈到添加填充到mcrypt调用,我真的想从openssl加密调用中删除填充...

php openssl 3des mcrypt php-openssl

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

使用DES/3DES与python

python中使用des/3des进行加密/解密的最佳模块/包是什么.有人可以提供示例来使用python上的des/3des加密数据.

python 3des cryptography

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

DES或3DES今天仍在使用吗?

我已经编写了一个DES实现作为练习,我现在想知道今天是否使用(三重)DES.

我已经读过使用它的银行卡,但我找不到任何可靠的来源.

3des des

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

在C#中复制T-SQL DecryptByPassPhrase

我想创建一个C#类来解密使用T-SQL的EncryptByPassPhrase加密的字节数组.(是的,我知道我可以在SQL Server中解密,但我需要的是能够在数据库层和中间层中等效加密/解密.)

据我所知,SQL Server的EncryptByPassPhrase和DecryptByPassPhrase使用TripleDES对称密钥算法.但是,我不清楚IV应该模拟SQL Server的密码学.我可以使用TripleDESCryptoServiceProvider类加密/解密,但是我找不到正确的key和IV实现来复制SQL Server正在做的事情.

有没有人做过类似的事情?谢谢!

c# sql encryption 3des

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

如何使用DUKPT加密在读卡器中生成密文?

对于

`BDK = "0123456789ABCDEFFEDCBA9876543210"` `KSN = "FFFF9876543210E00008"` 
Run Code Online (Sandbox Code Playgroud)

生成的密文如下

"C25C1D1197D31CAA87285D59A892047426D9182EC11353C051ADD6D0F072A6CB3436560B3071FC1FD11D9F7E74886742D9BEE0CFD1EA1064C213BB55278B2F12"`
Run Code Online (Sandbox Code Playgroud)

我在这里找到.我知道这个密文是基于BDK和KSN但是如何生成这个128长度的密文?它涉及的步骤或用于此的算法是什么?有人可以通过简单的步骤解释.我发现很难理解我用google搜索时得到的文件.

encryption 3des cryptography

8
推荐指数
2
解决办法
7509
查看次数

计算Ruby中一个字节的奇偶校验

在Ruby中计算字节是否具有奇数或偶数奇偶校验的最佳方法是什么?我有一个版本工作:

result = "AB".to_i(16).to_s(2).count('1').odd?
=> true
Run Code Online (Sandbox Code Playgroud)

将数字转换为字符串并计算"1"似乎是计算奇偶校验的一种不好的方法.有更好的方法吗?

我希望能够计算3DES密钥的奇偶校验.最终,我想将偶数字节转换为奇数.

谢谢,丹

ruby 3des des parity

6
推荐指数
1
解决办法
1389
查看次数

密码/ 3DES/CFB/Java和PHP

我有一个PHP服务器,它使用CFB模式解密3DES中的数据

我用PHP加密:

$montant = "500";
$message_crypte = mcrypt_encrypt(MCRYPT_3DES, "N4y1FRDRJ7wn7eJNnWaahCIS", $montant, ,CRYPT_MODE_CFB, "NCNPJDcR");
$montant = base64_encode($message_crypte);
Run Code Online (Sandbox Code Playgroud)

PHP中的这个脚本可以和其他系统一起使用.

我想用Java加密:

public class CryptData {
    private KeySpec keySpec;
    private SecretKey key;
    private IvParameterSpec iv;

    public CryptData(String keyString, String ivString) {
        try {
            final MessageDigest md = MessageDigest.getInstance("md5");

            final byte[] digestOfPassword = md.digest(Base64
                    .decodeBase64(keyString.getBytes("ISO-8859-1")));

            final byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);
            for (int j = 0, k = 16; j < 8;) {
                keyBytes[k++] = keyBytes[j++];
            }

            //keySpec = new DESedeKeySpec(keyBytes);
            keySpec = new DESedeKeySpec(keyString.getBytes());

            key …
Run Code Online (Sandbox Code Playgroud)

java encryption 3des

6
推荐指数
1
解决办法
2222
查看次数