首次提交

This commit is contained in:
lzjyzq2
2023-03-02 22:57:29 +08:00
parent 295157d946
commit 505bf37dab
16 changed files with 1577 additions and 0 deletions

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@ -0,0 +1,210 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SMCryptoUtils;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace SMCryptoUtilsTest
{
internal class Program
{
static void Main(string[] args)
{
//应用ID
String appId = "57E2D561E97141A3871DEFB410ADD920";
//应用秘钥
String appSecret = "F30D0D261BA04063A0BCAEF19F8ADBCC";
//应用私钥
String privateKey = "AKyhfvPbT+tIJHJkZSDILrw7t+FOG1U58UcupYYTzCOj";
//平台公钥为了测试用例能验签成功平台公钥当前赋值为应用公钥的值应用公钥存放于处方中心不对外提供实际上拿到的平台公钥是用于验签处方中心返回的数据不能用于此demo
String publicKey = "BIFd2+2CgjuPAj5FMj5L/L3azTWu86suPtlIJkCo8zjQ44R7SQUUkTgZGdVelRQCM5pW+x9tZGzDPaUNbfD499w=";
JObject requestData = new JObject();
requestData.Add("appId", appId);
requestData.Add("encType", "SM4");
requestData.Add("signType", "SM2");
requestData.Add("timestamp", (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds);
JObject data = new JObject();
// data.Add("userName", "张三");
/***********说明此次data对象替换为实际传递的业务数据结构以下结构仅供测试参考。***********/
data = JObject.Parse("{\n" +
" \"insuPlcNo\": \"350100\",\n" +
" \"hospRxno\": \"3504874534935555553312259665232132\",\n" +
" \"prscTime\": \"2022-06-06 10:10:00\",\n" +
" \"valiDays\": 1,\n" +
" \"valiEndTime\": \"2022-06-07 10:10:00\",\n" +
" \"authNo\": \"\",\n" +
" \"bizTypeCode\": \"01\",\n" +
" \"diseinfo\": [\n" +
" {\n" +
" \"diagCode\": \"E11.900\",\n" +
" \"diagDept\": \"心血管内科\",\n" +
" \"diagDrName\": \"吴丽雅\",\n" +
" \"diagDrNo\": \"PTYS0000818231\",\n" +
" \"diagName\": \"急性胃炎\",\n" +
" \"diagSrtNo\": \"1\",\n" +
" \"diagTime\": \"2022-04-07 10:10:00\",\n" +
" \"diagType\": \"1\",\n" +
" \"maindiagFlag\": \"1\",\n" +
" \"tcmDiseCode\": \"\",\n" +
" \"tcmDiseName\": \"\",\n" +
" \"tcmsymp\": \"\",\n" +
" \"tcmsympCode\": \"\"\n" +
" }\n" +
" ],\n" +
" \"ecToken\": \"\",\n" +
" \"initRxno\": \"\",\n" +
" \"longRxFlag\": \"1\",\n" +
" \"maxReptCnt\": 0,\n" +
" \"mdtrtCertType\": \"02\",\n" +
" \"mdtrtCertNo\": \"110101198811090049\",\n" +
" \"cardSn\":\"\",\n" +
" \"mdtrtinfo\": {\n" +
" \"algsHis\": \"注射过敏\",\n" +
" \"certno\": \"110101198811090049\",\n" +
" \"diseCodg\": \"\",\n" +
" \"diseCondDscr\": \"\",\n" +
" \"diseName\": \"\",\n" +
" \"drCode\": \"YS9083982313\",\n" +
" \"drDeptCode\": \"KSBM89981\",\n" +
" \"drDeptName\": \"外科\",\n" +
" \"drProfttlCodg\": \"ZCBM29931\",\n" +
" \"drProfttlName\": \"主任医师\",\n" +
" \"extras\": {\n" +
" \"1\": \"1\"\n" +
" },\n" +
" \"fixmedinsCode\": \"H35010200364\",\n" +
" \"fixmedinsName\": \"福建中医药大学附属第二人民医院\",\n" +
" \"fstdiagFlag\": \"0\",\n" +
" \"gend\": \"1\",\n" +
" \"gesoVal\": 0,\n" +
" \"hiFeesetlName\": \"本地医疗保险\",\n" +
" \"hiFeesetlType\": \"2\",\n" +
" \"insutype\": \"310\",\n" +
" \"iptOtpNo\": \"ZYMZ8909232131231\",\n" +
" \"maindiagCode\": \"E11.900\",\n" +
" \"maindiagName\": \"急性胃炎\",\n" +
" \"mdtrtId\": \"JZID888888\",\n" +
" \"mdtrtTime\": \"2022-05-19 14:10:00\",\n" +
" \"medType\": \"11\",\n" +
" \"medTypeName\": \"普通门诊\",\n" +
" \"medfeeSumamt\": 36.88,\n" +
" \"nwbAge\": \"\",\n" +
" \"nwbFlag\": \"0\",\n" +
" \"otpIptFlag\": \"1\",\n" +
" \"patnAge\": 27,\n" +
" \"patnHgt\": 180,\n" +
" \"patnName\": \"张三三\",\n" +
" \"patnWt\": 80,\n" +
" \"pharCertType\": \"01\",\n" +
" \"pharCertno\": \"350401198510101010\",\n" +
" \"pharChkTime\": \"2022-04-07 10:10:01\",\n" +
" \"pharCode\": \"PTYS000088232\",\n" +
" \"pharDeptCode\": \"KS989831\",\n" +
" \"pharDeptName\": \"内科\",\n" +
" \"pharName\": \"林玉英\",\n" +
" \"pharPracCertNo\": \"YSBH99032313\",\n" +
" \"pharProfttlCodg\": \"01\",\n" +
" \"pharProfttlName\": \"高级药师\",\n" +
" \"prscDeptCode\": \"KFKS98231\",\n" +
" \"prscDeptName\": \"内科\",\n" +
" \"prscDrCertType\": \"01\",\n" +
" \"prscDrCertno\": \"350422196510101010\",\n" +
" \"prscDrName\": \"吴丽雅\",\n" +
" \"psnCertType\": \"01\",\n" +
" \"psnNo\": \"RYBH38384\",\n" +
" \"rgstFee\": 15.88,\n" +
" \"spDiseFlag\": \"1\",\n" +
" \"suckPrdFlag\": \"0\"\n" +
" },\n" +
" \"minInrvDays\": 2,\n" +
" \"reptFlag\": \"0\",\n" +
" \"reptdCnt\": 0,\n" +
" \"rxCotnFlag\": \"0\",\n" +
" \"rxDoscnt\": 1,\n" +
" \"rxDosePrdDays\": 3,\n" +
" \"rxDosunt\": \"包\",\n" +
" \"rxDrordDscr\": \"多喝水\",\n" +
" \"rxDrugCnt\": 1,\n" +
" \"rxFrquCodg\": \"13\",\n" +
" \"rxFrquName\": \"每天三次tid\",\n" +
" \"rxTypeCode\": \"1\",\n" +
" \"rxUsedWayCodg\": \"1\",\n" +
" \"rxUsedWayName\": \"口服\",\n" +
" \"rxdrugdetail\": [\n" +
" {\n" +
" \"basMednFlag\": \"1\",\n" +
" \"chemname\": \"恩替卡韦口服溶液\",\n" +
" \"diseCodg\": \"BZML000000001\",\n" +
" \"drugCnt\": 1,\n" +
" \"drugDosform\": \"片剂\",\n" +
" \"drugDosunt\": \"盒\",\n" +
" \"drugGenname\": \"恩替卡韦口服溶液\",\n" +
" \"drugPric\": 1.5,\n" +
" \"drugProdname\": \"恩替卡韦口服溶液\",\n" +
" \"drugSpec\": \"1支/盒\",\n" +
" \"drugSumamt\": 27,\n" +
" \"drugTotlcnt\": \"1\",\n" +
" \"drugTotlcntEmp\": \"盒\",\n" +
" \"drugstdcode\": \"BWM99-03131\",\n" +
" \"extras\": {},\n" +
" \"fixmedinsHilistId\": \"\",\n" +
" \"hospApprFlag\": \"1\",\n" +
" \"hospPrepFlag\": \"0\",\n" +
" \"impDrugFlag\": \"0\",\n" +
" \"mainMedcFlag\": \"\",\n" +
" \"medListCodg\": \"XJ05AFE013X001010108569\",\n" +
" \"medcBegntime\": \"2022-04-08 10:10:00\",\n" +
" \"medcDays\": 0,\n" +
" \"medcEndtime\": \"2022-04-08 10:10:00\",\n" +
" \"medcWayCodg\": \"1\",\n" +
" \"medcWayDscr\": \"口服\",\n" +
" \"mednTypeCode\": \"0100\",\n" +
" \"mednTypeName\": \"抗生素类抗感染药物\",\n" +
" \"prdrName\": \"成都第一制药有限公司\",\n" +
" \"prodBarc\": \"111111111\",\n" +
" \"rxItemTypeCode\": \"11\",\n" +
" \"rxItemTypeName\": \"西药\",\n" +
" \"sinDoscnt\": 2,\n" +
" \"sinDosunt\": \"片\",\n" +
" \"tcmdrugTypeCode\": \"1\",\n" +
" \"tcmdrugTypeName\": \"\",\n" +
" \"tcmherbFoote\": \"\",\n" +
" \"urgtFlag\": \"\",\n" +
" \"usedFrquCodg\": \"13\",\n" +
" \"usedFrquName\": \"每天三次tid)\"\n" +
" }\n" +
" ]\n" +
"}");
SMUtil sMUtil = new SMUtil();
//加密
String encData = sMUtil.encrypt(JsonConvert.SerializeObject(data, Formatting.None), appId, appSecret);
Console.WriteLine("加密:" + encData);
JObject signDto = (JObject)JObject.Parse(JsonConvert.SerializeObject(requestData, Formatting.None));
signDto.Add("data", data);
//加签
String signData = sMUtil.sign(signDto, appSecret, privateKey);
Console.WriteLine("加签:" + signData);
//报文
requestData.Add("encData", encData);
requestData.Add("signData", signData);
Console.WriteLine("报文:" + JsonConvert.SerializeObject(requestData, Formatting.None));
//解密
String decData = sMUtil.decrypt(encData, appId, appSecret);
Console.WriteLine("解密:" + decData);
//验签
Boolean isVerify = sMUtil.verify(signDto, appSecret, publicKey, signData);
Console.WriteLine("验签:" + isVerify);
Console.ReadKey();
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("SMCryptoUtilsTest")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SMCryptoUtilsTest")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("8b808c3c-450e-4771-ab15-11b980cec34b")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{8B808C3C-450E-4771-AB15-11B980CEC34B}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>SMCryptoUtilsTest</RootNamespace>
<AssemblyName>SMCryptoUtilsTest</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>E:\DingDownload\医保局加解密方法工具类及调用demo医保电子处方中心V1.0\医保局加解密方法工具类及调用demo医保电子处方中心V1.0\C#\SMCryptoUtils\SMCryptoUtils\bin\Debug\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SMCryptoUtils\SMCryptoUtils.csproj">
<Project>{164f1097-1277-42dd-a4ad-dc9bd59be320}</Project>
<Name>SMCryptoUtils</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>