今天還好,時間上湊合,前段時間的手痛手麻的問題估計跟頸椎有關,所以大家還是要關注健康,別蝦雞吧聽那些白癡老闆說加班,奮鬥,等你這裏疼,那裏疼的時候,這羣貨一定會把你從他的地盤踹了。所以:
生活的全部不是工作,工作也不能代表生活;詩和遠方也許有牛糞、蚊子和飢腸轆轆,但一定是愜意的。
下面繼續分享國密加密算法中c#跟Openssl之間的交互,這次分享下碰到的問題。
如果不知道這兩者的話請看前面的分享。
Encryption SM2-SM4 C# interacts with OpenSSL(SM2-SM4 c#加密與OpenSSL交互)(一)
另外,我提交的Unity Asset Stone的資源大家可以下載,包含完整的示例。不過你想請我吃六塊的大餅卷燒麥就更好了。
也發個鏈接:
Unity Asset Store URL
需要指出來的是,因爲我當時做的時候順手就用了一個挺高版本的Unity,想換回去又麻煩。額。。。。
其實代碼應該是2017以上的版本都能用,如果工程運行不了,直接遷移一下就行(這是個知識點,要劃重點哦,怎麼遷移工程,至少有三種方法哦。)
//----------------------------下面是重點------------------------------------------//
1、SM4 ECB Encrypt和Decrypt的問題。
如果c#或者openssl單獨自己解密加密沒問題,但是已交互間歇問題,你可以試試把c#的isPadding解密設置爲false,
因爲看源碼就會發現,二者的區別原理都一樣,無非是補充位。
有時候Openssl傳過來的值會有差異。
看看源碼應該懂吧。你就明白了。
2、關於c# SM2 BigInteger轉byte[]後位數不足。
對於c# 的BigInteger轉byte[]的方式是:
BigInteger bigInt = c1.Value;
byte[] byteUnsigned = bigInt.ToByteArrayUnsigned();
但是通常會不夠位數,需要補零。
因此你需要操作如下代碼:
byte[] bus = input.ToByteArrayUnsigned();
byte[] busn= new byte[32];
bus.CopyTo(busn, 32 - bus.Length);
懂我意思了吧。
還有一些其他的問題,我下次再說吧。喲事情去了。