github.com/searKing/golang/go@v1.2.117/crypto/example_test.go (about) 1 // Copyright 2021 The searKing Author. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package crypto_test 6 7 import ( 8 "encoding/hex" 9 "fmt" 10 11 "github.com/searKing/golang/go/crypto" 12 ) 13 14 var unpad = []byte{0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD} 15 16 const ( 17 blockSizeInByte = 8 18 ) 19 20 func ExampleZeroPadding() { 21 padded := crypto.ZeroPadding(unpad, blockSizeInByte) 22 fmt.Println("padding:") 23 fmt.Print(hex.Dump(padded)) 24 decoded := crypto.ZeroUnPadding(padded, blockSizeInByte) 25 fmt.Println("unpadding:") 26 fmt.Println(hex.Dump(decoded)) 27 28 // Output: 29 // padding: 30 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd 00 00 00 00 |................| 31 // unpadding: 32 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd |............| 33 } 34 35 func ExampleBitPadding() { 36 padded := crypto.BitPadding(unpad, blockSizeInByte) 37 fmt.Println("padding:") 38 fmt.Print(hex.Dump(padded)) 39 decoded, err := crypto.BitUnPadding(padded, blockSizeInByte) 40 if err != nil { 41 fmt.Printf("err: %s", err) 42 return 43 } 44 fmt.Println("unpadding:") 45 fmt.Print(hex.Dump(decoded)) 46 47 // Output: 48 // padding: 49 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd 80 00 00 00 |................| 50 // unpadding: 51 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd |............| 52 } 53 54 func ExamplePKCS5Padding() { 55 padded := crypto.PKCS5Padding(unpad) 56 fmt.Println("padding:") 57 fmt.Print(hex.Dump(padded)) 58 decoded, err := crypto.PKCS5UnPadding(padded) 59 if err != nil { 60 fmt.Printf("err: %s", err) 61 return 62 } 63 fmt.Println("unpadding:") 64 fmt.Print(hex.Dump(decoded)) 65 66 // Output: 67 // padding: 68 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd 04 04 04 04 |................| 69 // unpadding: 70 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd |............| 71 } 72 73 func ExampleISO78164Padding() { 74 padded := crypto.ISO78164Padding(unpad, blockSizeInByte) 75 fmt.Println("padding:") 76 fmt.Print(hex.Dump(padded)) 77 decoded, err := crypto.ISO78164UnPadding(padded, blockSizeInByte) 78 if err != nil { 79 fmt.Printf("err: %s", err) 80 return 81 } 82 fmt.Println("unpadding:") 83 fmt.Print(hex.Dump(decoded)) 84 85 // Output: 86 // padding: 87 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd 80 00 00 00 |................| 88 // unpadding: 89 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd |............| 90 } 91 92 func ExampleISO9791Method1Padding() { 93 padded := crypto.ISO9791Method1Padding(unpad, blockSizeInByte) 94 fmt.Println("padding:") 95 fmt.Print(hex.Dump(padded)) 96 decoded := crypto.ISO9791Method1UnPadding(padded, blockSizeInByte) 97 fmt.Println("unpadding:") 98 fmt.Print(hex.Dump(decoded)) 99 100 // Output: 101 // padding: 102 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd 00 00 00 00 |................| 103 // unpadding: 104 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd |............| 105 } 106 107 func ExampleISO9791Method2Padding() { 108 padded := crypto.ISO9791Method2Padding(unpad, blockSizeInByte) 109 fmt.Println("padding:") 110 fmt.Print(hex.Dump(padded)) 111 decoded, err := crypto.ISO9791Method2UnPadding(padded, blockSizeInByte) 112 if err != nil { 113 fmt.Printf("err: %s", err) 114 return 115 } 116 fmt.Println("unpadding:") 117 fmt.Print(hex.Dump(decoded)) 118 119 // Output: 120 // padding: 121 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd 80 00 00 00 |................| 122 // unpadding: 123 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd |............| 124 } 125 126 func ExampleISO9791Method3Padding() { 127 padded := crypto.ISO9791Method3Padding(unpad, blockSizeInByte) 128 fmt.Println("padding:") 129 fmt.Print(hex.Dump(padded)) 130 decoded, err := crypto.ISO9791Method3UnPadding(padded, blockSizeInByte) 131 if err != nil { 132 fmt.Printf("err: %s", err) 133 return 134 } 135 fmt.Println("unpadding:") 136 fmt.Print(hex.Dump(decoded)) 137 138 // Output: 139 // padding: 140 // 00000000 00 00 00 00 00 00 00 60 dd dd dd dd dd dd dd dd |.......`........| 141 // 00000010 dd dd dd dd 00 00 00 00 |........| 142 // unpadding: 143 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd |............| 144 } 145 146 func ExampleANSIX923Padding() { 147 padded := crypto.ANSIX923Padding(unpad, blockSizeInByte) 148 fmt.Println("padding:") 149 fmt.Print(hex.Dump(padded)) 150 decoded, err := crypto.ANSIX923UnPadding(padded, blockSizeInByte) 151 if err != nil { 152 fmt.Printf("err: %s", err) 153 return 154 } 155 fmt.Println("unpadding:") 156 fmt.Print(hex.Dump(decoded)) 157 158 // Output: 159 // padding: 160 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd 00 00 00 04 |................| 161 // unpadding: 162 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd |............| 163 } 164 165 func ExampleIOS10126Padding() { 166 padded := crypto.IOS10126Padding(unpad, blockSizeInByte) 167 for i := len(unpad); i < len(padded)-1; i++ { 168 padded[i] = 0 169 } 170 fmt.Println("padding, replace random with 0x00:") 171 fmt.Print(hex.Dump(padded)) 172 decoded, err := crypto.IOS10126UnPadding(padded, blockSizeInByte) 173 if err != nil { 174 fmt.Printf("err: %s", err) 175 return 176 } 177 fmt.Println("unpadding:") 178 fmt.Print(hex.Dump(decoded)) 179 180 // Output: 181 // padding, replace random with 0x00: 182 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd 00 00 00 04 |................| 183 // unpadding: 184 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd |............| 185 } 186 187 func ExamplePKCS7Padding() { 188 padded := crypto.PKCS7Padding(unpad, blockSizeInByte) 189 fmt.Println("padding:") 190 fmt.Print(hex.Dump(padded)) 191 decoded, err := crypto.PKCS7UnPadding(padded, blockSizeInByte) 192 if err != nil { 193 fmt.Printf("err: %s", err) 194 return 195 } 196 fmt.Println("unpadding:") 197 fmt.Print(hex.Dump(decoded)) 198 199 // Output: 200 // padding: 201 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd 04 04 04 04 |................| 202 // unpadding: 203 // 00000000 dd dd dd dd dd dd dd dd dd dd dd dd |............| 204 }