在C#中使用三重DES加密,在perl中解密
我正在尝试使用三重des加密C#中的文本字符串。最终需要使用perl对文本进行解密。从另一端出来的文本看起来仍然像gobblygyk。我的密码上少了一面旗吗 C#加密: 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
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);
}