首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成HMAC签名

生成HMAC签名
EN

Stack Overflow用户
提问于 2020-05-30 07:33:51
回答 1查看 201关注 0票数 1

我正在尝试生成HMAC签名。这是为了与信用卡公司进行验证。下面是我生成HMAC签名的代码:

代码语言:javascript
复制
public  string APISecurityKey(Identity postParameters)
        {
            String secretAccessKey = "secretkey";
            string  data = "message";
            byte[] secretKey = Encoding.UTF8.GetBytes(secretAccessKey);
            HMACSHA256 hmac = new HMACSHA256(secretKey);
            hmac.Initialize();
            byte[] bytes = Encoding.UTF8.GetBytes(data);
            byte[] rawHmac = hmac.ComputeHash(bytes);
            return Convert.ToBase64String(rawHmac);

        }

他们要求我将message字段替换为JSON请求(JSON提供的请求应将所有回车符换行序列替换为空格字符)。我的对象看起来像这样:

代码语言:javascript
复制
 public class Identity
    {
        public List<Header> header { get; set; }
        public string firstName { get; set; }
        public string LastName { get; set; }
        public string middleName { get; set; }
        public string address { get; set; }
        public string mothersName { get; set; }
        public string DriversLic { get; set; }
        public DateTime insertTime { get; set; }
        public string Status { get; set; }
        public string city { get; set; }
        public string state { get; set; }
        public string zip { get; set; }
        public DateTime UpdatedOn { get; set; }
    }
}


 public class Header
    {
        public string tenantId { get; set; }
        public string requestType { get; set; }
        public string clientReferenceId { get; set; }
        public string expRequestId { get; set; }
        public string txnId { get; set; }
        public string messageTime { get; set; }
        public string options { get; set; }


    } 

给我的消息示例如下:

代码语言:javascript
复制
{"tenantId": "TENANT1","request Type": "Simulator","clientRefere
nceId": "Hunter + ProveID","expRequestId": "333","messageTim
e": "2016-08-04T22:13:07Z","options": {"workflow": "wf1","model
Type":"mt1","responseType":1,"Responses": {…}}}

我不确定如何在我的JSON消息中包含tenantId,tenantId,expRequestId,options。我对JSON非常陌生。我有这个部分代码:

代码语言:javascript
复制
public static async Task createJSON( Identity postParameters)
        {
            var tmpRequest = new HttpRequestMessage();
            tmpRequest.Content = new StringContent(JsonConvert.SerializeObject(postParameters));

            tmpRequest.Content.Headers.Add("tenantId", "V123456");
            tmpRequest.Content.Headers.Add("requestType", "PreciseIdOnly");
        }

postParameters是我的带有值的标识对象。如何创建包含tenantId、tenantId、expRequestId和对象JSON,以便将该JSON值放入APISecurityKey方法的消息中。下面是我需要创建的测试JSON文件:

代码语言:javascript
复制
{
    "header": {
        "tenantId": "V123456",
        "requestType": "Precise",
        "clientReferenceId": "11111111",
        "RequestId": "",
        "txnId": "",
        "messageTime": "2020-05-28T00:00:02Z",
        "options": {}
    },
    "payload": {
        "control": [
            {
                "option": "SUBSCRIBER_PREAMBLE",
                "value": "wer"
            },
            {
                "option": "SUBSCRIBER_OPERATOR_INITIAL",
                "value": "WS"
            },
            {
                "option": "SUBSCRIBER_SUB_CODE",
                "value": "1111111"
            },
            {
                "option": "PID_USERNAME",
                "value": "demo"
            },
            {
                "option": "PID_PASSWORD",
                "value": "password"
            },
            {
                "option": "PRODUCT_OPTION",
                "value": "11"
            }
        ],
        "contacts": [{
            "id": "APPLICANT_CONTACT_ID_1",
            "person": {
                "typeOfPerson": "",
                "personIdentifier": "",
                "personDetails": {
                    "dateOfBirth": "1990-12-11",
                    "yearOfBirth": "",
                    "age": "",
                    "gender": "",
                    "noOfDependents": "",
                    "occupancyStatus": "",
                    "mothersMaidenName": "",
                    "spouseName": ""
                },
                "names": [{
                    "id": "",
                    "firstName": "Test1",
                    "middleNames": "D",
                    "surName": "Test2",
                    "nameSuffix": ""
                }]
            },
            "addresses": [{
                "id": "Main_Contact_Address_0",
                "addressType": "CURRENT",
                "poBoxNumber": "",
                "street": "2312 Test Drve",
                "street2": "",
                "postTown": "test",
                "postal": "49548",
                "stateProvinceCode": "CA"
            }],
            "identityDocuments": [{
                "documentNumber": "123456789",
                "hashedDocumentNumber": "",
                "documentType": "SSN"
            }]

        }]
    }
}

我希望使用对象在C#中生成与上面示例相同的JSOn。

任何帮助都将受到高度的感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-04 04:13:40

如果您使用的是Visual studio,您可以通过转到Edit菜单并粘贴JSON作为类来创建JSON。这将为您创建所有类,然后您可以通过实例化这些类来为其赋值

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62096020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档