コード例 #1
0
ファイル: CryptUtils_Csharp.cs プロジェクト: zjccwboy/PayAPI
        private trafficMessage DecryptMessageAfterResponse(trafficMessage msgEncrypt)
        {
            trafficMessage msgSource = new trafficMessage();

            msgSource.transCode  = msgEncrypt.transCode;
            msgSource.merId      = msgEncrypt.merId;
            msgSource.extend     = msgEncrypt.extend;
            msgSource.encryptKey = CryptUtils.getStringFromBytes(CryptUtils.RSADecrypt(CryptUtils.getPrivateKeyXmlFromPFX(pfxFilePath, pfxPassword).PrivateKey.ToXmlString(true),
                                                                                       CryptUtils.Base64Decoder(msgEncrypt.encryptKey)), encodeCode);
            Console.WriteLine("Decrypted remote AESkey [" + msgSource.encryptKey + "]");
            //Console.WriteLine("encryptKey[" + msgSource.encryptKey + "]);

            byte[] sourceByte = CryptUtils.AESDecrypt(CryptUtils.Base64Decoder(msgEncrypt.encryptData),
                                                      msgSource.encryptKey);
            msgSource.encryptData = CryptUtils.getStringFromBytes(sourceByte, encodeCode);
            // Console.WriteLine("encryptData[" + msgSource.encryptData + "][" + msgEncrypt.encryptData + "]");

            msgSource.sign =
                CryptUtils.VerifySignWithPublicKey(
                    sourceByte,
                    CryptUtils.getPublicKeyXmlFromCer(cerFilePath),
                    CryptUtils.Base64Decoder(msgEncrypt.sign)
                    ).ToString();

            // Console.WriteLine("sign[" + msgSource.sign + "][" + msgEncrypt.sign + "]");
            //需要添加引用 System.Web
            return(msgSource);
        }
コード例 #2
0
ファイル: CryptUtils_Csharp.cs プロジェクト: zjccwboy/PayAPI
        private trafficMessage EncryptMessageBeforePost(trafficMessage msgSource)
        {
            trafficMessage msgEncrypt = new trafficMessage();

            //随机生成16位密钥
            msgSource.encryptKey = CryptUtils.GuidTo16String();
            Console.WriteLine("Generated local AESkey [" + msgSource.encryptKey + "]");

            //encryptKey加密,杉德公钥RSA加密
            msgEncrypt.encryptKey = CryptUtils.Base64Encoder(CryptUtils.RSAEncrypt(CryptUtils.getPublicKeyXmlFromCer(cerFilePath).PublicKey.Key.ToXmlString(false),
                                                                                   CryptUtils.getBytesFromString(msgSource.encryptKey, encodeCode)));

            //Console.WriteLine("encryptKey[" + msgSource.encryptKey + "][" + msgEncrypt.encryptKey + "]");

            msgEncrypt.transCode = msgSource.transCode;
            msgEncrypt.merId     = msgSource.merId;
            msgEncrypt.extend    = msgSource.extend;

            //encryptData加密,AES加密
            msgEncrypt.encryptData = CryptUtils.Base64Encoder(CryptUtils.AESEncrypt(CryptUtils.getBytesFromString(msgSource.encryptData, encodeCode),
                                                                                    msgSource.encryptKey));

            //Console.WriteLine("encryptData[" + msgSource.encryptData + "][" + msgEncrypt.encryptData + "]");

            msgEncrypt.sign = CryptUtils.Base64Encoder(CryptUtils.CreateSignWithPrivateKey(CryptUtils.getBytesFromString(msgSource.encryptData, encodeCode),
                                                                                           CryptUtils.getPrivateKeyXmlFromPFX(pfxFilePath, pfxPassword)));

            //Console.WriteLine("sign[" + msgEncrypt.sign + "]");

            return(msgEncrypt);
        }
コード例 #3
0
        public trafficMessage CheckSignMessageAfterResponse(trafficMessage msgEncrypt)
        {
            trafficMessage msgSource = new trafficMessage();

            //获取报文字符集
            this.encodeCode = Encoding.GetEncoding(msgEncrypt.charset);
            log.Debug("Message Charset is [" + msgEncrypt.charset + "]");

            msgSource.charset  = msgEncrypt.charset;
            msgSource.signType = msgEncrypt.signType;
            msgSource.extend   = msgEncrypt.extend;
            msgSource.data     = msgEncrypt.data;

            msgSource.sign = CryptUtils.VerifySignWithPublicKey(
                (CryptUtils.getBytesFromString(msgEncrypt.data, encodeCode)),
                CryptUtils.getPublicKeyXmlFromCer(cerFilePath),
                CryptUtils.Base64Decoder(msgEncrypt.sign)
                ).ToString();

            log.Debug("sign[" + msgSource.sign + "][" + msgEncrypt.sign + "]");
            return(msgSource);
        }
コード例 #4
0
        public trafficMessage SignMessageBeforePost(trafficMessage msgSource)
        {
            trafficMessage msgEncrypt = new trafficMessage();


            //获取报文字符集
            this.encodeCode = Encoding.GetEncoding(msgSource.charset);
            log.Debug("Message Charset is [" + msgSource.charset + "]");

            msgEncrypt.charset  = msgSource.charset;
            msgEncrypt.signType = msgSource.signType;
            msgEncrypt.extend   = msgSource.extend;
            msgEncrypt.data     = msgSource.data;

            //报文签名
            msgEncrypt.sign = CryptUtils.Base64Encoder(CryptUtils.CreateSignWithPrivateKey(CryptUtils.getBytesFromString(msgSource.data, encodeCode),
                                                                                           CryptUtils.getPrivateKeyXmlFromPFX(pfxFilePath, pfxPassword)));

            log.Debug("sign[" + msgEncrypt.sign + "]");

            return(msgEncrypt);
        }