go-Encrypt

This commit is contained in:
songguangy
2018-11-05 21:03:40 +08:00
parent 57a0d7da9a
commit 11078deabc
16 changed files with 152 additions and 120 deletions

191
.idea/workspace.xml generated
View File

@@ -2,7 +2,21 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="879b126a-5488-4e29-a4e1-3a8936e89a2d" name="默认的" comment=""> <list default="true" id="879b126a-5488-4e29-a4e1-3a8936e89a2d" name="默认的" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/AES_CBC.go" beforeDir="false" afterPath="$PROJECT_DIR$/AES_CBC.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/AES_CTR.go" beforeDir="false" afterPath="$PROJECT_DIR$/AES_CTR.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/DES_CBC.go" beforeDir="false" afterPath="$PROJECT_DIR$/DES_CBC.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EccCrypt.go" beforeDir="false" afterPath="$PROJECT_DIR$/EccCrypt.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EccSign.go" beforeDir="false" afterPath="$PROJECT_DIR$/EccSign.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/GetECCKey.go" beforeDir="false" afterPath="$PROJECT_DIR$/GetECCKey.go" afterDir="false" /> <change beforePath="$PROJECT_DIR$/GetECCKey.go" beforeDir="false" afterPath="$PROJECT_DIR$/GetECCKey.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/GetRsakey.go" beforeDir="false" afterPath="$PROJECT_DIR$/GetRsakey.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/PKCS5padding.go" beforeDir="false" afterPath="$PROJECT_DIR$/PKCS5padding.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/RsaCrypt.go" beforeDir="false" afterPath="$PROJECT_DIR$/RsaCrypt.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/RsaSign.go" beforeDir="false" afterPath="$PROJECT_DIR$/RsaSign.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/TripleDES_CBC.go" beforeDir="false" afterPath="$PROJECT_DIR$/TripleDES_CBC.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ecies.go" beforeDir="false" afterPath="$PROJECT_DIR$/ecies.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/sha256.go" beforeDir="false" afterPath="$PROJECT_DIR$/sha256.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/sha512.go" beforeDir="false" afterPath="$PROJECT_DIR$/sha512.go" afterDir="false" />
</list> </list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" /> <option name="TRACKING_ENABLED" value="true" />
@@ -12,29 +26,7 @@
<option name="LAST_RESOLUTION" value="IGNORE" /> <option name="LAST_RESOLUTION" value="IGNORE" />
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="375"> <leaf SIDE_TABS_SIZE_LIMIT_KEY="375" />
<file leaf-file-name="ecies.go" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/ecies.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="7506">
<caret line="391" column="5" selection-start-line="391" selection-start-column="5" selection-end-line="391" selection-end-column="5" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="EccCrypt.go" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/EccCrypt.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-891">
<caret line="39" column="35" selection-start-line="39" selection-start-column="35" selection-end-line="39" selection-end-column="35" />
<folding>
<element signature="e#15#153#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</component> </component>
<component name="GOROOT" path="D:\downlode" /> <component name="GOROOT" path="D:\downlode" />
<component name="Git.Settings"> <component name="Git.Settings">
@@ -43,14 +35,20 @@
<component name="IdeDocumentHistory"> <component name="IdeDocumentHistory">
<option name="CHANGED_PATHS"> <option name="CHANGED_PATHS">
<list> <list>
<option value="$PROJECT_DIR$/RsaSign.go" />
<option value="$PROJECT_DIR$/RsaCrypt.go" />
<option value="$PROJECT_DIR$/AES_CBC.go" /> <option value="$PROJECT_DIR$/AES_CBC.go" />
<option value="$PROJECT_DIR$/EccCrypt.go" />
<option value="$PROJECT_DIR$/AES_CTR.go" />
<option value="$PROJECT_DIR$/DES_CBC.go" /> <option value="$PROJECT_DIR$/DES_CBC.go" />
<option value="$PROJECT_DIR$/GetECCKey.go" />
<option value="$PROJECT_DIR$/EccSign.go" /> <option value="$PROJECT_DIR$/EccSign.go" />
<option value="$PROJECT_DIR$/ecies.go" /> <option value="$PROJECT_DIR$/ecies.go" />
<option value="$PROJECT_DIR$/EccCrypt.go" /> <option value="$PROJECT_DIR$/GetECCKey.go" />
<option value="$PROJECT_DIR$/GetRsakey.go" />
<option value="$PROJECT_DIR$/PKCS5padding.go" />
<option value="$PROJECT_DIR$/RsaCrypt.go" />
<option value="$PROJECT_DIR$/RsaSign.go" />
<option value="$PROJECT_DIR$/sha256.go" />
<option value="$PROJECT_DIR$/sha512.go" />
<option value="$PROJECT_DIR$/TripleDES_CBC.go" />
</list> </list>
</option> </option>
</component> </component>
@@ -81,8 +79,8 @@
<subPane> <subPane>
<expand> <expand>
<path> <path>
<item name="wmgocrypt" type="b2602c69:ProjectViewProjectNode" /> <item name="goEncrypt" type="b2602c69:ProjectViewProjectNode" />
<item name="wmgocrypt" type="462c0819:PsiDirectoryNode" /> <item name="goEncrypt" type="462c0819:PsiDirectoryNode" />
</path> </path>
</expand> </expand>
<select /> <select />
@@ -112,9 +110,8 @@
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="-8" y="-8" width="1456" height="886" extended-state="6" /> <frame x="-8" y="-8" width="1456" height="886" extended-state="6" />
<editor active="true" />
<layout> <layout>
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.22182082" /> <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.22615607" />
<window_info anchor="bottom" id="TODO" order="6" /> <window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="bottom" id="调试" order="7" /> <window_info anchor="bottom" id="调试" order="7" />
<window_info anchor="bottom" id="Event Log" order="7" side_tool="true" /> <window_info anchor="bottom" id="Event Log" order="7" side_tool="true" />
@@ -143,6 +140,20 @@
<option name="myLimit" value="2678400000" /> <option name="myLimit" value="2678400000" />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/ecies.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="10179">
<caret line="391" column="5" selection-start-line="391" selection-start-column="5" selection-end-line="391" selection-end-column="5" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/EccCrypt.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="864">
<caret line="39" column="35" selection-start-line="39" selection-start-column="35" selection-end-line="39" selection-end-column="35" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/EccSign.go"> <entry file="file://$PROJECT_DIR$/EccSign.go">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1971"> <state relative-caret-position="1971">
@@ -153,35 +164,76 @@
<entry file="file://$PROJECT_DIR$/GetRsakey.go"> <entry file="file://$PROJECT_DIR$/GetRsakey.go">
<provider selected="true" editor-type-id="text-editor" /> <provider selected="true" editor-type-id="text-editor" />
</entry> </entry>
<entry file="file://$PROJECT_DIR$/sha256.go"> <entry file="file://$PROJECT_DIR$/AES_CBC.go">
<provider selected="true" editor-type-id="text-editor" /> <provider selected="true" editor-type-id="text-editor">
</entry> <state relative-caret-position="-1757">
<entry file="file://$PROJECT_DIR$/TripleDES_CBC.go"> <caret line="2" selection-start-line="2" selection-end-line="2" />
<provider selected="true" editor-type-id="text-editor" /> </state>
</provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/AES_CTR.go"> <entry file="file://$PROJECT_DIR$/AES_CTR.go">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1406"> <state relative-caret-position="-1352">
<folding> <caret line="2" column="8" lean-forward="true" selection-start-line="2" selection-start-column="8" selection-end-line="2" selection-end-column="8" />
<element signature="e#19#69#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/DES_CBC.go"> <entry file="file://$PROJECT_DIR$/DES_CBC.go">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1451"> <state relative-caret-position="-1809">
<caret line="27" lean-forward="true" selection-start-line="27" selection-end-line="27" /> <caret line="2" column="8" lean-forward="true" selection-start-line="2" selection-start-column="8" selection-end-line="2" selection-end-column="8" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/EccCrypt.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1757">
<caret line="1" lean-forward="true" selection-start-line="1" selection-end-line="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/EccSign.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1730">
<caret line="11" column="1" lean-forward="true" selection-start-line="11" selection-start-column="1" selection-end-line="11" selection-end-column="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ecies.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1863">
<caret line="27" column="21" selection-start-line="27" selection-start-column="21" selection-end-line="27" selection-end-column="21" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/GetECCKey.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-540">
<caret line="1" lean-forward="true" selection-start-line="1" selection-end-line="1" />
<folding> <folding>
<element signature="e#19#87#0" expanded="true" /> <element signature="e#19#123#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/PKCS5padding.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="54">
<caret line="4" column="1" lean-forward="true" selection-start-line="4" selection-start-column="1" selection-end-line="4" selection-end-column="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/GetRsakey.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1505">
<caret column="17" selection-start-column="17" selection-end-column="17" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/RsaCrypt.go"> <entry file="file://$PROJECT_DIR$/RsaCrypt.go">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-162"> <state relative-caret-position="-2430">
<caret line="9" column="1" lean-forward="true" selection-start-line="9" selection-start-column="1" selection-end-line="9" selection-end-column="1" /> <caret column="17" selection-start-column="17" selection-end-column="17" />
<folding> <folding>
<element signature="e#19#107#0" expanded="true" /> <element signature="e#19#107#0" expanded="true" />
</folding> </folding>
@@ -190,52 +242,29 @@
</entry> </entry>
<entry file="file://$PROJECT_DIR$/RsaSign.go"> <entry file="file://$PROJECT_DIR$/RsaSign.go">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-972"> <state relative-caret-position="-1478">
<caret line="18" column="2" lean-forward="true" selection-start-line="18" selection-start-column="2" selection-end-line="18" selection-end-column="2" /> <caret line="11" column="1" lean-forward="true" selection-start-line="11" selection-start-column="1" selection-end-line="11" selection-end-column="1" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/GetRsakey.go"> <entry file="file://$PROJECT_DIR$/sha256.go">
<provider selected="true" editor-type-id="text-editor" /> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-866">
<caret column="17" selection-start-column="17" selection-end-column="17" />
</state>
</provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/GetECCKey.go"> <entry file="file://$PROJECT_DIR$/sha512.go">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-893"> <state relative-caret-position="-893">
<caret line="9" column="9" lean-forward="true" selection-start-line="9" selection-start-column="9" selection-end-line="9" selection-end-column="9" /> <caret column="17" selection-start-column="17" selection-end-column="17" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/EccSign.go"> <entry file="file://$PROJECT_DIR$/TripleDES_CBC.go">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1566"> <state relative-caret-position="-1676">
<caret line="67" column="18" selection-start-line="67" selection-start-column="18" selection-end-line="67" selection-end-column="18" /> <caret line="9" lean-forward="true" selection-start-line="9" selection-end-line="9" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/AES_CBC.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="592">
<caret line="83" column="9" lean-forward="true" selection-start-line="83" selection-start-column="9" selection-end-line="83" selection-end-column="9" />
<folding>
<element signature="e#19#87#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/EccCrypt.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-891">
<caret line="39" column="35" selection-start-line="39" selection-start-column="35" selection-end-line="39" selection-end-column="35" />
<folding>
<element signature="e#15#153#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ecies.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="7506">
<caret line="391" column="5" selection-start-line="391" selection-start-column="5" selection-end-line="391" selection-end-column="5" />
</state> </state>
</provider> </provider>
</entry> </entry>

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"crypto/aes" "crypto/aes"

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"crypto/aes" "crypto/aes"

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"crypto/des" "crypto/des"

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"log" "log"

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"crypto/sha256" "crypto/sha256"

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"crypto/ecdsa" "crypto/ecdsa"

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"crypto/rsa" "crypto/rsa"

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"bytes" "bytes"

View File

@@ -1,4 +1,7 @@
# wmgocrypt ```
goEncrypt
```
go语言封装的各种对称加密和非对称加密可以直接使用包括3重DESAES的CBC和CTR模式还有RSA非对称加密 go语言封装的各种对称加密和非对称加密可以直接使用包括3重DESAES的CBC和CTR模式还有RSA非对称加密
下载到本地可以直接调用 下载到本地可以直接调用
@@ -6,7 +9,7 @@ go语言封装的各种对称加密和非对称加密可以直接使用
使用方法 使用方法
``` ```
go get github.com/wumansgy/wmgocrypt go get github.com/wumansgy/goEncrypt
``` ```
然后下载到本地可以直接调用包括了DES的CBC模式的加密解密虽然DES早就被破解但是可以参考使用三重DES的加密解密可以使用AES的CBC模式和CTR模式对称加密中常用的加密算法非对称加密RSA的加密解密比较常用的非对称加密算法椭圆曲线加密算法后面更新还有哈希函数sha256sha512的快速使用MD5SHA1已经在20042005年被陆续攻破现在常用sha256和sha512 然后下载到本地可以直接调用包括了DES的CBC模式的加密解密虽然DES早就被破解但是可以参考使用三重DES的加密解密可以使用AES的CBC模式和CTR模式对称加密中常用的加密算法非对称加密RSA的加密解密比较常用的非对称加密算法椭圆曲线加密算法后面更新还有哈希函数sha256sha512的快速使用MD5SHA1已经在20042005年被陆续攻破现在常用sha256和sha512
@@ -19,11 +22,11 @@ func main(){
fmt.Println("明文为:",string(plaintext)) fmt.Println("明文为:",string(plaintext))
//传入明文和自己定义的密钥密钥为8字节如果不足8字节函数内部自动补全超过8字节函数内部截取 //传入明文和自己定义的密钥密钥为8字节如果不足8字节函数内部自动补全超过8字节函数内部截取
cryptText := wmgocrypt.DesCBC_Encrypt(plaintext, []byte("asd12345")) //得到密文 cryptText := goEncrypt.DesCBC_Encrypt(plaintext, []byte("asd12345")) //得到密文
fmt.Println("DES的CBC模式加密后的密文为:", base64.StdEncoding.EncodeToString(cryptText)) fmt.Println("DES的CBC模式加密后的密文为:", base64.StdEncoding.EncodeToString(cryptText))
//传入密文和自己定义的密钥需要和加密的密钥一样不一样会报错8字节如果不足8字节函数内部自动补全超过8字节函数内部截取 //传入密文和自己定义的密钥需要和加密的密钥一样不一样会报错8字节如果不足8字节函数内部自动补全超过8字节函数内部截取
newplaintext := wmgocrypt.DesCBC_Decrypt(cryptText, []byte("asd12345")) //解密得到密文 newplaintext := goEncrypt.DesCBC_Decrypt(cryptText, []byte("asd12345")) //解密得到密文
fmt.Println("DES的CBC模式解密完", string(newplaintext)) fmt.Println("DES的CBC模式解密完", string(newplaintext))
} }
@@ -39,11 +42,11 @@ func main(){
fmt.Println("明文为:",string(plaintext)) fmt.Println("明文为:",string(plaintext))
//传入明文和自己定义的密钥密钥为24字节如果不足24字节函数内部自动补全不过超过24字节函数内部截取 //传入明文和自己定义的密钥密钥为24字节如果不足24字节函数内部自动补全不过超过24字节函数内部截取
cryptText := wmgocrypt.TripleDesEncrypt(plaintext, []byte("wumansgy12345678asdfghjk")) cryptText := goEncrypt.TripleDesEncrypt(plaintext, []byte("wumansgy12345678asdfghjk"))
fmt.Println("三重DES的CBC模式加密后的密文为:", base64.StdEncoding.EncodeToString(cryptText)) fmt.Println("三重DES的CBC模式加密后的密文为:", base64.StdEncoding.EncodeToString(cryptText))
//传入密文和自己定义的密钥需要和加密的密钥一样不一样会报错24字节如果不足24字节函数内部自动补全超过24字节函数内部截取 //传入密文和自己定义的密钥需要和加密的密钥一样不一样会报错24字节如果不足24字节函数内部自动补全超过24字节函数内部截取
newplaintext := wmgocrypt.TripleDesDecrypt(cryptText, []byte("wumansgy12345678asdfghjk")) newplaintext := goEncrypt.TripleDesDecrypt(cryptText, []byte("wumansgy12345678asdfghjk"))
fmt.Println("三重DES的CBC模式解密完", string(newplaintext)) fmt.Println("三重DES的CBC模式解密完", string(newplaintext))
} }
@@ -59,11 +62,11 @@ func main(){
fmt.Println("明文为:",string(plaintext)) fmt.Println("明文为:",string(plaintext))
//传入明文和自己定义的密钥密钥为16字节如果不足16字节函数内部自动补全超过16字节函数内部截取 //传入明文和自己定义的密钥密钥为16字节如果不足16字节函数内部自动补全超过16字节函数内部截取
cryptText := wmgocrypt.AesCBC_Encrypt(plaintext, []byte("wumansgygoaescry")) cryptText := goEncrypt.AesCBC_Encrypt(plaintext, []byte("wumansgygoaescry"))
fmt.Println("AES的CBC模式加密后的密文为:", base64.StdEncoding.EncodeToString(cryptText)) fmt.Println("AES的CBC模式加密后的密文为:", base64.StdEncoding.EncodeToString(cryptText))
//传入密文和自己定义的密钥需要和加密的密钥一样不一样会报错16字节如果不足16字节函数内部自动补全超过16字节函数内部截取 //传入密文和自己定义的密钥需要和加密的密钥一样不一样会报错16字节如果不足16字节函数内部自动补全超过16字节函数内部截取
newplaintext := wmgocrypt.AesCBC_Decrypt(cryptText, []byte("wumansgygoaescry")) newplaintext := goEncrypt.AesCBC_Decrypt(cryptText, []byte("wumansgygoaescry"))
fmt.Println("AES的CBC模式解密完", string(newplaintext)) fmt.Println("AES的CBC模式解密完", string(newplaintext))
} }
@@ -79,11 +82,11 @@ func main(){
fmt.Println("明文为:",string(plaintext)) fmt.Println("明文为:",string(plaintext))
//传入明文和自己定义的密钥密钥为16字节如果不足16字节函数内部自动补全超过16字节函数内部截取 //传入明文和自己定义的密钥密钥为16字节如果不足16字节函数内部自动补全超过16字节函数内部截取
cryptText := wmgocrypt.AesCTR_Encrypt(plaintext, []byte("wumansgygoaesctr")) cryptText := goEncrypt.AesCTR_Encrypt(plaintext, []byte("wumansgygoaesctr"))
fmt.Println("AES的CTR模式加密后的密文为:", base64.StdEncoding.EncodeToString(cryptText)) fmt.Println("AES的CTR模式加密后的密文为:", base64.StdEncoding.EncodeToString(cryptText))
//传入密文和自己定义的密钥需要和加密的密钥一样不一样会报错16字节如果不足16字节函数内部自动补全超过16字节函数内部截取 //传入密文和自己定义的密钥需要和加密的密钥一样不一样会报错16字节如果不足16字节函数内部自动补全超过16字节函数内部截取
newplaintext := wmgocrypt.AesCTR_Decrypt(cryptText, []byte("wumansgygoaesctr")) newplaintext := goEncrypt.AesCTR_Decrypt(cryptText, []byte("wumansgygoaesctr"))
fmt.Println("AES的CTR模式解密完", string(newplaintext)) fmt.Println("AES的CTR模式解密完", string(newplaintext))
} }
@@ -101,7 +104,7 @@ func main(){
``` ```
func main() { func main() {
wmgocrypt.GetRsaKey() goEncrypt.GetRsaKey()
} }
``` ```
@@ -156,14 +159,14 @@ ad6gP18x4SD9oHZEkQsMHADpGK57k6tNkxnnB+AlAjXOuzwXh/8Q0vN9FsSW++hW
-----END wuman public key-----`) -----END wuman public key-----`)
//直接传入明文和公钥加密得到密文 //直接传入明文和公钥加密得到密文
crypttext, err := wmgocrypt.RsaEncrypt(plaintext, publickey) crypttext, err := goEncrypt.RsaEncrypt(plaintext, publickey)
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
return return
} }
fmt.Println("密文", hex.EncodeToString(crypttext)) fmt.Println("密文", hex.EncodeToString(crypttext))
//解密操作,直接传入密文和私钥解密操作,得到明文 //解密操作,直接传入密文和私钥解密操作,得到明文
plaintext, err = wmgocrypt.RsaDecrypt(crypttext, privatekey) plaintext, err = goEncrypt.RsaDecrypt(crypttext, privatekey)
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
return return
@@ -221,7 +224,7 @@ LuQ+kK5350RFfwe1YH6a/Mjun9g0z0Faljf96n4JvCIruHoGUUXOadIlaLRFfXvF
JwIDAQAB JwIDAQAB
-----END WUMAN PUBLIC KEY-----`) -----END WUMAN PUBLIC KEY-----`)
msg:=[]byte("RSA数字签名测试") msg:=[]byte("RSA数字签名测试")
signmsg,err:=wmgocrypt.RsaSign(msg,privateKey) signmsg,err:=goEncrypt.RsaSign(msg,privateKey)
if err!=nil{ if err!=nil{
fmt.Println(err) fmt.Println(err)
return return
@@ -229,7 +232,7 @@ JwIDAQAB
fmt.Println("RSA数字签名的消息为",hex.EncodeToString(signmsg)) fmt.Println("RSA数字签名的消息为",hex.EncodeToString(signmsg))
//验证数字签名正不正确 //验证数字签名正不正确
result:=wmgocrypt.RsaVerifySign(msg,signmsg,publicKey) result:=goEncrypt.RsaVerifySign(msg,signmsg,publicKey)
if result{ //如果result返回的是true那么就是本人签名否则不是只有私钥加密相对的公钥验证才可以认为是本人 if result{ //如果result返回的是true那么就是本人签名否则不是只有私钥加密相对的公钥验证才可以认为是本人
fmt.Println("RSA数字签名正确是本人") fmt.Println("RSA数字签名正确是本人")
}else{ }else{
@@ -251,7 +254,7 @@ JwIDAQAB
``` ```
func main(){ func main(){
wmgocrypt.GetEccKey() goEncrypt.GetEccKey()
} }
``` ```
@@ -279,12 +282,12 @@ WjPtDIQJxQ3AnvFbQaoJ+0gvOtFsR8jRVVD2lLwAQsrTDk3+L/ZvmhGhzjcANsX/
W/fnOWXyXQ7DB16jMSQ= W/fnOWXyXQ7DB16jMSQ=
-----END WUMAN ECC PUBLIC KEY-----`) -----END WUMAN ECC PUBLIC KEY-----`)
msg:=[]byte("数字签名测试") msg:=[]byte("数字签名测试")
rtext,stext:=wmgocrypt.EccSign(msg,privateKey) rtext,stext:=goEncrypt.EccSign(msg,privateKey)
fmt.Println("数字签名的消息为:",hex.EncodeToString(rtext)+hex.EncodeToString(stext)) fmt.Println("数字签名的消息为:",hex.EncodeToString(rtext)+hex.EncodeToString(stext))
//验证数字签名正不正确 //验证数字签名正不正确
result:=wmgocrypt.EccVerifySign(msg,publicKey,rtext,stext) result:=goEncrypt.EccVerifySign(msg,publicKey,rtext,stext)
if result{ //如果result返回的是true那么就是本人签名否则不是只有私钥加密相对的公钥验证才可以认为是本人 if result{ //如果result返回的是true那么就是本人签名否则不是只有私钥加密相对的公钥验证才可以认为是本人
fmt.Println("数字签名正确,是本人") fmt.Println("数字签名正确,是本人")
}else{ }else{
@@ -303,7 +306,7 @@ W/fnOWXyXQ7DB16jMSQ=
``` ```
func main(){ func main(){
wmgocrypt.GetEccKey() goEncrypt.GetEccKey()
} //这里我们得到的密钥是通过P256曲线得到的由于之前验证用别的曲线调用以太坊接口会报错 } //这里我们得到的密钥是通过P256曲线得到的由于之前验证用别的曲线调用以太坊接口会报错
``` ```
@@ -328,10 +331,10 @@ FooGpsKCbLvrdUW4peVIwKEW+yC3/g2X7Q2A8ftJlYv2X4kDU180GhIQpA==
-----END WUMAN ECC PUBLIC KEY----- -----END WUMAN ECC PUBLIC KEY-----
`) `)
cryptText,_:=wmgocrypt.EccPublicEncrypt(plainText,publicKey) cryptText,_:=goEncrypt.EccPublicEncrypt(plainText,publicKey)
fmt.Println("ECC传入公钥加密的密文为",hex.EncodeToString(cryptText)) fmt.Println("ECC传入公钥加密的密文为",hex.EncodeToString(cryptText))
msg,err:=wmgocrypt.EccPrivateDeCrypt(cryptText,privateKey) msg,err:=goEncrypt.EccPrivateDeCrypt(cryptText,privateKey)
if err!=nil{ if err!=nil{
fmt.Println(err) fmt.Println(err)
} }
@@ -350,7 +353,7 @@ FooGpsKCbLvrdUW4peVIwKEW+yC3/g2X7Q2A8ftJlYv2X4kDU180GhIQpA==
``` ```
func main(){ func main(){
//获取文件哈希的时候,需要传入文件的路径就行了,如果传入文件夹会报错 //获取文件哈希的时候,需要传入文件的路径就行了,如果传入文件夹会报错
fileHash,err:=wmgocrypt.GetFileHash256("D:/gocode/播放器.zip") fileHash,err:=goEncrypt.GetFileHash256("D:/gocode/播放器.zip")
if err!=nil{ if err!=nil{
fmt.Println(err) fmt.Println(err)
return return
@@ -358,7 +361,7 @@ func main(){
fmt.Println("文件的哈希为:",fileHash) fmt.Println("文件的哈希为:",fileHash)
//得到普通字符串哈希直接传入字符串就行 //得到普通字符串哈希直接传入字符串就行
Hash:=wmgocrypt.GetStringHash256("得到普通哈希") Hash:=goEncrypt.GetStringHash256("得到普通哈希")
fmt.Println("普通字符串哈希:",Hash) fmt.Println("普通字符串哈希:",Hash)
} }
@@ -371,7 +374,7 @@ func main(){
``` ```
func main(){ func main(){
//获取文件哈希的时候,需要传入文件的路径就行了,如果传入文件夹会报错 //获取文件哈希的时候,需要传入文件的路径就行了,如果传入文件夹会报错
fileHash,err:=wmgocrypt.GetFileHash512("D:/gocode/播放器.zip") fileHash,err:=goEncrypt.GetFileHash512("D:/gocode/播放器.zip")
if err!=nil{ if err!=nil{
fmt.Println(err) fmt.Println(err)
return return
@@ -379,7 +382,7 @@ func main(){
fmt.Println("文件的哈希为:",fileHash) fmt.Println("文件的哈希为:",fileHash)
//得到普通字符串哈希直接传入字符串就行 //得到普通字符串哈希直接传入字符串就行
Hash:=wmgocrypt.GetStringHash512("得到普通哈希") Hash:=goEncrypt.GetStringHash512("得到普通哈希")
fmt.Println("普通字符串哈希:",Hash) fmt.Println("普通字符串哈希:",Hash)
} }
``` ```

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"encoding/pem" "encoding/pem"

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"encoding/pem" "encoding/pem"

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"crypto/des" "crypto/des"

View File

@@ -27,7 +27,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package wmgocrypt package goEncrypt
import ( import (
"crypto/cipher" "crypto/cipher"

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"crypto/sha256" "crypto/sha256"

View File

@@ -1,4 +1,4 @@
package wmgocrypt package goEncrypt
import ( import (
"os" "os"