蓝易云:C#与NodeJS互相实现DES加密解密

本文详细介绍了如何在C#和Node.js中使用DES算法进行加密和解密,提供了代码示例,并提醒在实际应用中要考虑安全性和最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要在C#和Node.js中互相实现DES加密和解密,可以使用相同的算法和密钥来进行操作。下面是一个示例:

C#中的DES加密解密示例:

using System;
using System.Security.Cryptography;
using System.Text;

public class Program
{
    public static void Main()
    {
        string originalText = "Hello, world!";
        string key = "mySecretKey";

        byte[] encryptedBytes = Encrypt(originalText, key);
        string encryptedText = Convert.ToBase64String(encryptedBytes);
        Console.WriteLine("Encrypted text: " + encryptedText);

        string decryptedText = Decrypt(encryptedBytes, key);
        Console.WriteLine("Decrypted text: " + decryptedText);
    }

    public static byte[] Encrypt(string plainText, string key)
    {
        byte[] keyBytes = Encoding.UTF8.GetBytes(key);
        byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);

        using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
        {
            des.Key = keyBytes;
            des.IV = keyBytes;

            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    cryptoStream.Write(plainBytes, 0, plainBytes.Length);
                    cryptoStream.FlushFinalBlock();
                    return memoryStream.ToArray();
                }
            }
        }
    }

    public static string Decrypt(byte[] encryptedBytes, string key)
    {
        byte[] keyBytes = Encoding.UTF8.GetBytes(key);

        using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
        {
            des.Key = keyBytes;
            des.IV = keyBytes;

            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateDecryptor(), CryptoStreamMode.Write))
                {
                    cryptoStream.Write(encryptedBytes, 0, encryptedBytes.Length);
                    cryptoStream.FlushFinalBlock();
                    return Encoding.UTF8.GetString(memoryStream.ToArray());
                }
            }
        }
    }
}

Node.js中的DES加密解密示例:

const crypto = require('crypto');

function encrypt(plainText, key) {
  const cipher = crypto.createCipheriv('des', key, key);
  let encrypted = cipher.update(plainText, 'utf8', 'base64');
  encrypted += cipher.final('base64');
  return encrypted;
}

function decrypt(encryptedText, key) {
  const decipher = crypto.createDecipheriv('des', key, key);
  let decrypted = decipher.update(encryptedText, 'base64', 'utf8');
  decrypted += decipher.final('utf8');
  return decrypted;
}

const originalText = 'Hello, world!';
const key = 'mySecretKey';

const encryptedText = encrypt(originalText, key);
console.log('Encrypted text:', encryptedText);

const decryptedText = decrypt(encryptedText, key);
console.log('Decrypted text:', decryptedText);

请注意,这只是一个基本的示例,用于演示如何在C#和Node.js中使用DES算法进行加密和解密。在实际应用中,应考虑更多的安全性和最佳实践,例如密钥管理、加密模式和填充方式的选择等。

希望以上解答对你有帮助。如果你有任何其他问题,请随时提问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值