kentfredric (owner)

Revisions

gist: 207648 Download_button fork
public
Public Clone URL: git://gist.github.com/207648.git
Embed All Files: show embed
Test_DC_EC_D.pl #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/perl
use strict;
use warnings;
 
use DBIx::Class::EncodedColumn::Digest;
 
# Paraphrased copy of DBIx::Class::EncodedColumn::Digest::make_check_sub
#
my %digest_lengths = (
  'MD2' => { base64 => 22, binary => 16, hex => 32 },
  'MD4' => { base64 => 22, binary => 16, hex => 32 },
  'MD5' => { base64 => 22, binary => 16, hex => 32 },
 
  'SHA-1' => { base64 => 27, binary => 20, hex => 40 },
  'SHA-256' => { base64 => 43, binary => 32, hex => 64 },
  'SHA-384' => { base64 => 64, binary => 48, hex => 96 },
  'SHA-512' => { base64 => 86, binary => 64, hex => 128 },
 
  'CRC-CCITT' => { base64 => 2, binary => 3, hex => 3 },
  'CRC-16' => { base64 => 6, binary => 5, hex => 4 },
  'CRC-32' => { base64 => 14, binary => 10, hex => 8 },
 
  'Adler-32' => { base64 => 6, binary => 4, hex => 8 },
  'Whirlpool' => { base64 => 86, binary => 64, hex => 128 },
  'Haval-256' => { base64 => 44, binary => 32, hex => 64 },
);
 
sub make_check_sub {
  my ( $encoder, $args ) = @_;
 
  #this is the digest length
  my $len = $digest_lengths{ $args->{algorithm} }{ $args->{format} };
  die("Unable to find digest length") unless defined $len;
 
  #fast fast fast
  return eval qq^ sub {
    my \$col_v = shift;
    my \$check = shift;
    my \$salt = substr(\$col_v, ${len});
    \$encoder->(\$check, \$salt) eq \$col_v;
  } ^ || die($@);
}
 
for my $format (qw( MD2 MD4 MD5 SHA-1 SHA-256 SHA-384 SHA-512 Whirlpool )) {
 
  my @encoders = ();
 
  for ( 0 .. 3 ) {
 
    my $encoder = DBIx::Class::EncodedColumn::Digest->make_encode_sub(
      'dummy',
      {
        format => 'hex',
        algorithm => $format,
        salt_length => 0,
      }
    );
 
    my $checker = make_check_sub(
      $encoder,
      {
        algorithm => $format,
        format => 'hex',
        salt_length => 0,
      }
    );
 
    push @encoders, [ $encoder, $checker ];
  }
 
  my $algo_success = 1;
 
  for ( 0 .. 3 ) {
    for (@encoders) {
      my $encoded = $_->[0]->( 'asdasd123', '' );
      my $check_response = $_->[1]->( $encoded, 'asdasd123' );
      if ( not $check_response ){
        print "\e[31m FALSE $encoded\e[0m\n";
        $algo_success = 0;
      } else {
        print "\e[37m TRUE $encoded\e[0m\n";
      }
    }
  }
 
  if( $algo_success ){
    print "Algorithm $format validated successfully\n";
  } else {
    print "Algorithm $format failed validation\n";
  }
}
 
Text only #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
 TRUE f7414b553995cb8c728db3d0912a3ef9
Algorithm MD2 validated successfully
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
 TRUE 49586cb2e5f1a5f5929492b6019e4de0
Algorithm MD4 validated successfully
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
 TRUE b23cf2d0fb74b0ffa0cf4c70e6e04926
Algorithm MD5 validated successfully
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
 TRUE c8499454bada15f6d76bbf8cf133960f93f9b4eb
Algorithm SHA-1 validated successfully
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
 TRUE 9cdcfbbe0183b2f1855ee2f7354fb2a8d175b133b227052a095302b4559bf525
Algorithm SHA-256 validated successfully
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
 TRUE a266bbf6ba2303d3547a075d79a19b4d74d0775bbd3fcaf5025f46070cde97ad5ef7193ebd304910c60170af569e8286
Algorithm SHA-384 validated successfully
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
 TRUE 0c4f22c8d979def2ab3efdfe62f294372d0ec22c69b62334ad58b4306ceed310a0010414205660df0afa6850a1ad201f2b803af58475f18d43c7f0b9fe7777b5
Algorithm SHA-512 validated successfully
 FALSE ad4402a8979f8008e7c2d7f18c9b047eaa0c708de44bb11ecfaa534a948c2e3c3a5042354c9eebf30bbbbd5db32c82197de46f29d63eb3f4adb5c3f63d521dec
 FALSE ad4402a8979f8008e7c2d7f18c9b047eaa0c708de44bb11ecfaa534a948c2e3c3a5042354c9eebf30bbbbd5db32c82197de46f29d63eb3f4adb5c3f63d521dec
 FALSE ad4402a8979f8008e7c2d7f18c9b047eaa0c708de44bb11ecfaa534a948c2e3c3a5042354c9eebf30bbbbd5db32c82197de46f29d63eb3f4adb5c3f63d521dec
 FALSE ad4402a8979f8008e7c2d7f18c9b047eaa0c708de44bb11ecfaa534a948c2e3c3a5042354c9eebf30bbbbd5db32c82197de46f29d63eb3f4adb5c3f63d521dec
 FALSE cd2bbcc506f4091f2147b0afda48d3b5d3a8d9c0c5a8be2f63ba8516d01d4d09ba324dc6d77e72805dc4b3fb1f6a7799650f2858c981f5a6d5d4a1063d65ed32
 FALSE cd2bbcc506f4091f2147b0afda48d3b5d3a8d9c0c5a8be2f63ba8516d01d4d09ba324dc6d77e72805dc4b3fb1f6a7799650f2858c981f5a6d5d4a1063d65ed32
 FALSE cd2bbcc506f4091f2147b0afda48d3b5d3a8d9c0c5a8be2f63ba8516d01d4d09ba324dc6d77e72805dc4b3fb1f6a7799650f2858c981f5a6d5d4a1063d65ed32
 FALSE cd2bbcc506f4091f2147b0afda48d3b5d3a8d9c0c5a8be2f63ba8516d01d4d09ba324dc6d77e72805dc4b3fb1f6a7799650f2858c981f5a6d5d4a1063d65ed32
 FALSE b4d914cc0592cb7684593243e63eab62655f521193044793796431cc03207c0a01c4dfe7f3cc4c9b42525a16c10aa63802ac6bd16080eea6649d703154a54a49
 FALSE b4d914cc0592cb7684593243e63eab62655f521193044793796431cc03207c0a01c4dfe7f3cc4c9b42525a16c10aa63802ac6bd16080eea6649d703154a54a49
 FALSE b4d914cc0592cb7684593243e63eab62655f521193044793796431cc03207c0a01c4dfe7f3cc4c9b42525a16c10aa63802ac6bd16080eea6649d703154a54a49
 FALSE b4d914cc0592cb7684593243e63eab62655f521193044793796431cc03207c0a01c4dfe7f3cc4c9b42525a16c10aa63802ac6bd16080eea6649d703154a54a49
 FALSE 7bcf4c36bdf05c9989d468078f5c739c10a331daa0fb8b4e35d4c455fef1f16e079c3c0bbd1ff80c5b966b8c77095fbc40936fff2bd013630c928cb8e342fdda
 FALSE 7bcf4c36bdf05c9989d468078f5c739c10a331daa0fb8b4e35d4c455fef1f16e079c3c0bbd1ff80c5b966b8c77095fbc40936fff2bd013630c928cb8e342fdda
 FALSE 7bcf4c36bdf05c9989d468078f5c739c10a331daa0fb8b4e35d4c455fef1f16e079c3c0bbd1ff80c5b966b8c77095fbc40936fff2bd013630c928cb8e342fdda
 FALSE 7bcf4c36bdf05c9989d468078f5c739c10a331daa0fb8b4e35d4c455fef1f16e079c3c0bbd1ff80c5b966b8c77095fbc40936fff2bd013630c928cb8e342fdda
Algorithm Whirlpool failed validation