在C#中使用三重DES加密,在perl中解密

在C#中使用三重DES加密,在perl中解密,c#,perl,encryption,C#,Perl,Encryption,我正在尝试使用三重des加密C#中的文本字符串。最终需要使用perl对文本进行解密。从另一端出来的文本看起来仍然像gobblygyk。我的密码上少了一面旗吗 C#加密: perl解密: sub DecryptString { my ($dbh, $args) = @_; my $inargs = $args->{INPUT}; my $key="THISIS24BYTESWORTHOFTEXT"; my $iv = "01234567"; my $cipher = Crypt::CB

我正在尝试使用三重des加密C#中的文本字符串。最终需要使用perl对文本进行解密。从另一端出来的文本看起来仍然像gobblygyk。我的密码上少了一面旗吗

C#加密:

perl解密:

sub DecryptString { 
my ($dbh, $args) = @_;

my $inargs = $args->{INPUT};
my $key="THISIS24BYTESWORTHOFTEXT";
my $iv = "01234567";

my $cipher = Crypt::CBC->new(
        -cipher => 'DES_EDE3',
        -key => $key,
        -literal_key => 1,
        -iv => $iv,
        -add_header => 0,
        -keysize => 24,
);

return $cipher->decrypt($inargs);
}

需要在解密前解码。根据下面的评论,我将电话改为

$inargs=decode_base64($inargs)


就在调用解密之前。

需要在解密之前解码。根据下面的评论,我将电话改为

$inargs=decode_base64($inargs)


就在调用decrypt之前。

这可能有帮助,也可能没有帮助,但我猜perl可能使用utf8编码,而不是您在C#端使用的ascii编码。将C#更改为使用utf8编码,然后再试一次。不要在新工作中使用Tripple DES,它不再被认为是安全的,请使用AES(高级加密标准)。AES与3DES的接口基本相同,因此使用起来并不困难。这可能有帮助,也可能没有帮助,但我猜perl可能使用utf8编码,而不是您在C#端使用的ascii编码。将C#更改为使用utf8编码,然后再试一次。不要在新工作中使用Tripple DES,它不再被认为是安全的,请使用AES(高级加密标准)。AES与3DES的接口基本相同,因此使用起来并不困难。整个功能已经由
use MIME::Base64 qw(decode_Base64)提供没有理由在Perl 5.6之后使用IO::Scalar整个函数已经由
使用MIME::Base64 qw(decode_Base64)提供没有理由在Perl 5.6之后使用IO::Scalar
sub DecryptString { 
my ($dbh, $args) = @_;

my $inargs = $args->{INPUT};
my $key="THISIS24BYTESWORTHOFTEXT";
my $iv = "01234567";

my $cipher = Crypt::CBC->new(
        -cipher => 'DES_EDE3',
        -key => $key,
        -literal_key => 1,
        -iv => $iv,
        -add_header => 0,
        -keysize => 24,
);

return $cipher->decrypt($inargs);
}