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  }