IPSIDS特征识别和签名或规则编写

1、IPS/IDS特征识别和签名或规则编写HYPERLINK2008年09月02日07:11IT规则或签名要素协议,源IP,目的IP源端口,目的端口,数据报方向,IP报文的TTL域,IP报文的TOS域,IP报文的分片ID域,IP报文的option域,IP报文的fragbits域(分片比特位),IP负载的长度,TCP的flags域,TCP报文的SEQ域,TCP报文的ACK域,ICMP报文的itype类型域,ICMP报文的icode代码域,ICMP报文的icmp_id回应消息ID域,ICMP报文的icmp_seq回应消息序列号域,PALOAD负载如果使用SNORT_INLINE版本,可以用的要素是

2、resp,就是入侵响应,可选方式:rst_snd,rst_rcv,rst_all,icmp_net,icmp_host,icmp_port,icmp_all检测签名和规则编写的时候还要主要协议特征和PAYLOAD的特征位置,比如offset:0;depth:1;这个就是说从PAYLOAD的起始位置开始,长度是1的PAYLOAD作为特征.数据报方向在NFR的NCODE里面可以这样写:Filtersample1tcp(dport:80,client)相当与从你定义的要保护的子网出去的流量.Filtersample1tcp(dport:80,server)相当与其他网络到达你定义的要保护的子网进来的

3、流量.在SNORT的规则里flow:to_server到你要定义的server的流量,flow:from_client是从客户端来的流量,flow还可以指定检测连接的状态的,比如stateless,established等在NCODE里有*.cfg文件定义的几个数据大家要认识一下:backend_id=NID-792-002num_columns=6column_1_attr=IP_ADDR_SRC#源地址column_1_type=p_src_ipcolumn_1_label=SourceAddresscolumn_2_attr=PORT_SRC#源端口column_2_type=p_src

4、_portcolumn_2_label=SourcePortcolumn_3_attr=IP_ADDR_DST#目的地址column_3_type=p_dst_ipcolumn_3_label=DestinationAddresscolumn_4_attr=PORT_DST#目的端口column_4_type=p_dst_portcolumn_4_label=DestinationPortcolumn_5_attr=REASONcolumn_5_type=p_stringcolumn_5_label=Reasoncolumn_6_attr=PAYLOAD蠟据包的DATA部分column_6_t

5、ype=p_stringcolumn_6_label=AdditionalDatagui=listtitle=PPLiveACITVEorigin=NFRdisposition=enableversion=7如果你是检测UDP协议特征,你的签名要素要这样写:IP_ADDR_SRC,ip.src,#源地址PORT_SRC,udp.sport,#UDP协议的源端口IP_ADDR_DST,ip.dst,#目的地址PORT_DST,udp.dport#UDP协议的目的端口IP_PROTO_NUM,17,#UDP协议号如果你检测的是TCP协议特征,你的签名要素要这样写:IP_ADDR_SRC,tcp.c

6、onnsrc,#TCP协议的源地址IP_ADDR_DST,tcp.conndst,#TCP协议的目的地址PORT_SRC,tcp.connsport,#TCP协议的源端口PORT_DST,tcp.conndport#TCP协议的目的端口IP_PROTO_NUM,6,#TCP协议号SNORT和NFR签名的一般写法SNORT规则写法alerttcp$HOME_NETany-$EXTERNAL_NETany(msg:BLEEDING-EDGEP2PDirectConnectTraffic(client-server);flow:from_client,established;content:$MyI

7、NFO;offset:0;depth:7;classtype:policy-violation;reference:url,/wiki/Direct_connect_file-sharing_application;sid:2002814;rev:1;)注释:检测TCP协议,从要保护的本地网络到外部网络的连接,是任意端口到任意端口,即any到any.方向flow:from_client,匹配payload里的第0位开始,长度是7,是否存在$MyINFOalerttcpanyany-any4660:4799(msg:BLEEDING-EDGEP2Ped2kfilerequestanswer;fl

8、ow:to_server,established;content:|e3|;offset:0;depth:1;content:|00000059|;offset:2;depth:4;reference:url,HYPERLINK/practical/GCIH/Ian_Gosling_GCIH.pdf/practical/GCIH/Ian_Gosling_GCIH.pdf;classtype:policy-violation;sid:2000333;rev:5;)注释:检测TCP协议,从任何网络到任何网络的连接,从任意端口到4660:4799(端口在4660到4799之间),方向是flow

13、90,#签名报警的可信度IP_ADDR_SRC,ip.src,PORT_SRC,udp.sport,IP_ADDR_DST,ip.dst,PORT_DST,udp.dport,$temp1,$temp1,$temp2,$temp2);recordpacket.sec,ip.src,udp.sport,ip.dst,#做数据报记录的功能,#如果attack里的inhitit.values开启了record这个签名的功能#,这里就要录制数据报udp.sport,qqclientconnecttoserver,N/AtoRCDR;#detectqqrequestinfo$temp1=byte(udp

15、backend_id=NID-911-003num_columns=6column_1_attr=IP_ADDR_SRCcolumn_1_type=p_src_ipcolumn_1_label=SourceAddresscolumn_2_attr=PORT_SRCcolumn_2_type=p_src_portcolumn_2_label=SourcePortcolumn_3_attr=IP_ADDR_DSTcolumn_3_type=p_dst_ipcolumn_3_label=DestinationAddresscolumn_4_attr=PORT_DSTcolumn_4_type=p_d

17、)P2P类软件1)EMULE检测它包括UDP的特征和TCP的特征,这里就举一个UDP抓包的例子为了消除误报,可以将检测端口放到1024以上.加上过滤条件下面的图是EMULE的UDP的包1Dat3joaogGd毘或阻JOLDOC-3F200000207d35Lt!(.02iO3DjQ4Dif(substr(udp.blob,0,1)=xe4)#第一个字节是0xe4if(substr(udp.blob,1,1)=x20)|(substr(udp.blob,1,1)=x21)|#第2个字节是0x21(substr(udp.blob,1,1)=x00)|(substr(udp.blob,1,1)=

18、x10)|(substr(udp.blob,1,1)=x18)|(substr(udp.blob,1,1)=x52)|(substr(udp.blob,1,1)=x58)|(substr(udp.blob,1,1)=x59)|(substr(udp.blob,1,1)=x28)|(substr(udp.blob,1,1)=x50)|(substr(udp.blob,1,1)=x40)alert(emule_source,emule_datatransfer_alert,ip.src,udp.sport,ip.dst,udp.dport,-AlertDetails,ALERT_ID,096-02

19、2-001,ALERT_CONFIDENCE,90,ALERT_SEVERITY,low,ALERT_IMPACT,unknown,ALERT_EVENT_TYPE,probe,ALERT_ASSESSMENT,unknown,IP_PROTO_NUM,17,IP_ADDR_SRC,ip.src,PORT_SRC,udp.sport,IP_ADDR_DST,ip.dst,PORT_DST,udp.dport,ed2k,ED2KPROTOCOLDATATRANSFER2);下面举个TCP的例子90,115SS9.3171967TCP115985.4219551114AhH1:F:i5AUK三已q

20、=994Ack=8604eDonkeeMuleExtensionsTCP:unknown116089.4222077116189.4844111110.0.B.67116239.434660711638S.484669860.20.1S9.717eDonkeeMuleExteniorsTCP:unknowrieDonkeeMuleExtenslonsTCP:unknowneDonkeeDonkeyTCP:HashseTRequestTCP4557134SSYrJ.ACK5eq=0Ack=lV/11RQ.4.R4fiQ11O.O.141.1砧一”1.TCP14Rb-4SS7rAfklW戶n=1A

21、rk=1Win=fiSHeader1engrh:20bytesFlage:0x0018Qpsh,ACK)Windowsize:65267匚hecksum:0x7502carrectd-seq/ackanalysis卜eDonkeyProroGole&orikeyPr口tocol3100mo3120313001403150_y7.d325-eCJJni了o7._y25oQ-676c12f&-h-6CJCJe6-.5-dabs9od-dbcJ8p-4276rJFI-663176-.H_4s5p-_y16262-hlg&452p-2&52斗24rl-c937.6603Pirates.of.th

22、已匸aribbeanThEcurse,of.rhe.Biank_口口m.gnwkt4if(substr(tcp.blob,0,1)=xc5)#0xc5第0位if(substr(tcp.blob,5,1)=x01)|(substr(tcp.blob,5,1)=x02)|(substr(tcp.blob,5,1)=x04)|(substr(tcp.blob,5,1)=x60)|(substr(tcp.blob,5,1)=x61)|(substr(tcp.blob,5,1)=x81)|(substr(tcp.blob,5,1)=x82)|(substr(tcp.blob,5,1)=x87)|(su

23、bstr(tcp.blob,5,1)=x85)|(substr(tcp.blob,5,1)=x86)|(substr(tcp.blob,5,1)=x90)|(substr(tcp.blob,5,1)=x91)|(substr(tcp.blob,5,1)=x93)#0xc5第5位alert(emule_source,emule_extensions_alert,ip.src,udp.sport,ip.dst,udp.dport,-AlertDetails,ALERT_ID,096-022-001,ALERT_CONFIDENCE,ALERT_SEVERITY,low,ALERT_IMPACT,

24、unknown,ALERT_EVENT_TYPE,probe,ALERT_ASSESSMENT,unknown,IP_PROTO_NUM,6,IP_ADDR_SRC,ip.src,PORT_SRC,udp.sport,IP_ADDR_DST,ip.dst,PORT_DST,udp.dport,ed2k,ED2KExtensions(Emule)PROTOCOLDATATRANSFER);总结一下:关于特征,如果不是协议特征攻击方面的,就不要找PAYLOAD以外的其他元素,在PAYLOAD里找不一定都是PAYLOAD的头一个字节开始,而且特征都不是一定连续的,可能跳多少个字节才有特征,这个最好把

25、关键的包打印下来,在纸面上比较比较,暂时没有太好的工具来计算特征,所谓特征包,就是能重复出现的包,不论是一台机器上,也不论是一个网段里.2)BT检测BT的UDP特征检测ooooQo-n-4rl-67-sooooQoo日1日1T9o3_dcerj37-.-J2666Q-af19-.J257422_d4dLtl且-.-Jr6-.-J_ys4p-el6z71b63d匚rl-b_y-y1305L.OI7a-h-LrLT-_4_3且2o6Ltlp-JL|_Lnc42862p-o1p-A-e3-Ha且sa1-Js3b33If109o巧o6r-3o457-4-d16C7d33if(substr(udp.bl

26、ob,0,4)=d1:a)|(substr(udp.blob,0,4)=d1:r)#这个特#征比较明显,就是找到字符串是d1:ad2:id20:或者是d1:rd2:id20if(substr(udp.blob,4,8)=d2:id20:)alert(source_bitudp,bit_udp_datatrans_alert,ip.src,ip.dst,-AlertDetails,ALERT_ID,982-002-002,ALERT_SEVERITY,low,ALERT_IMPACT,informationgathering,ALERT_EVENT_TYPE,logging,ALERT_ASSE

27、SSMENT,unknown,IP_PROTO_NUM,17,IP_ADDR_SRC,ip.src,PORT_SRC,udp.sport,IP_ADDR_DST,ip.dst,PORT_DST,udp.dport,BTMETHOD,_9);BT的TCP特征BitTorrentAcknow!edgementnumber:49CrelativeacknumberHeader1ength:20bytes:Flags:0x0018gH,ACK)V/1ndowsize:31952checksum:0xab09correct也/PUTorreriolsx.2aC0061-NI-.-一I.c.Ir9C2

28、7-2f24Lil-74171-1JJJ7-protoc1o72op-c097,or-oo31od-.3sd67-o35so&-J3CIOc_b471-b23b24&74.3fid一;IL.P_uVI-4JsoJ-ooL-d91-oo.ebLI283o4d4r-c7-d716T942afc2Ju_t了5且o4667fab4oo了I-.Iugu-uooQoo丄_-I-4567u-uooQoo卜eeq/atkana.ly5i5if(substr($blob,1,19)=BitTorrentprotocol)#从第1个字节开#始算特征,BitTorrentprotocol是BT软件开始应用层握手的

29、信息$confidence=80;#letsIDthissucker$ind=substr($blob,(1+$hdr_len+8+20+1),2);debug:trace($ind=,$ind,$offset=,(1+$hdr_len+8+20+1);$client=BT_CLIENT_DB$ind;if($client=NULL)#XXXwait,theresmore$client=unknown;if(BT_CLIENT_DBsubstr($ind,0,1)$client=BT_CLIENT_DBsubstr($ind,0,1);总结一下:BT软件是先TCP三次握手,然后应用层握手,接下

34、0Accept:/rnuser-Agent:Mozi11a/40compatible;M5IET00;windows9Srnhost:rhemeqqcomrn匚ache-匚ontrol;门一匚a匚herncookie:pvid=5281466152;flv=S.0rnVnLclllrJooo-I.-42Voo47cno4d4677.ooAudcocl-Q6L=.-.1.-ooQCOcl-4oAu7JU6p-dAuGJ_dp-_yc212fAu7rrl了oo6Mdf4S1od2b6Qoo1b2*oo2f6aods21LTo3I713Lf匚_aoLrp4-=!-562nQ1fQIZo4b713n-

41、检测这里举个MSN传文件的例子9217.Q0272477TCP32492003PacketLength:1446bytescaptureLength:1446bytesProtocolsinframe:eth:ip:tcp:dataiTransmissionControlProtocol,5rcPort:3249(3249),DstPort:Z003E0Sourceport:3249Q249)Desrinationport:2003(20033sequencenumber:4atlwesequencenumber)Nextsequencenumber:1395(relafivesequence

42、number)Acknowledgementnumber:0(relaliveacknumber)Header1ength:20bytes:Flags:0x0018(PSH,ACK)Windowsize:64582chacksuin:0x737correctu1oooooAuoooooooo门:n-_y_dbcdp-fo1-1.-_.!-4rl-67.DataC1392bytesi:-msnin5gnreqbodyr-Lengrn.EUF-GUIO2AB-619bbb-OOgOicarion/r-sessio匸onren:989.D:i5D3E4F795683onlD:10schariri

43、q0.匸琴屮.Fla#、-”:.AppiD:ext:fgi叮MaaaaAOgsAAAEAAADOTViWd42#detectmsnfiletransferif(index($buffer,x41x70x70x49x44x3ax20x32x0dx0a)=0)$to=elem(split($buffer,rn),5);$from=elem(split($buffer,rn),6);$temp=elem(split($buffer,rn),16);$temp1=substr($temp,(strlen(context:);$temp1=substr($temp1,0,100);$filenam

44、e=debase64($temp1);alert(ims_source,msn_file_alert,$from,$to,tcp.connsrc,tcp.conndst,-AlertDetails,ALERT_ID,911-010-002,ALERT_CONFIDENCE,90,ALERT_SEVERITY,info,ALERT_IMPACT,information,ALERT_EVENT_TYPE,logging,filename,$filename,IP_ADDR_SRC,tcp.connsrc,IP_ADDR_DST,tcp.conndst,PORT_SRC,tcp.connsport,

46、rj6fc-1.4-d749.ecl-c4315o7.8Ju8ob55o2452rl-3gd92ECJo6odfoFJo9o7-dfo2-T3f_d5dIdo42cbo87-cf15b4c_yo_d6Ju4_ds64648.fobo1002000300040005000600070OOSO_d1odDatabytesj00200030004000500060007000S0F5cglQlk-s-oa8ob6d87Hoco_doo1oaclo9o23d002f00c4ebflO_y7s46f1cf4f78fo_b24co6528bH-l10b_be=!_cb6_yooaoo5ffd4of04fb

47、Q-d2f3op-37-bo匚87.7foo41bo1O4&Data(612byt也主J66203f0c347d26b3026cS69b00300040005000600070Q080if(udp.sport1024)&(udp.dport1024)if(substr(udp.blob,0,1)=xfe)if(substr(udp.blob,2,2)=x00x00)|(substr(udp.blob,2,2)=x04x04)alert(source_qqliveudpdata,qqlive_udp_datatrans_alert,ip.src,ip.dst,-AlertDetails,ALE

49、r(udp.blob,3,11)=x00x00x00x00x00x00x00x00x00x00x00)alert(source_qqliveudpdata,qqlive_udp_datatrans_alert,ip.src,ip.dst,-AlertDetails,ALERT_ID,988-002-002,ALERT_SEVERITY,info,ALERT_IMPACT,informationgathering,ALERT_EVENT_TYPE,logging,ALERT_ASSESSMENT,unknown,IP_PROTO_NUM,17,IP_ADDR_SRC,ip.s

52、e:url,HYPERLINK/advisories/CA-2001-19.html/advisories/CA-2001-19.html;classtype:web-application-attack;sid:1256;rev:8;)检测URI里是否包含/root.exe在NFR里检测还是比较合理的:KEY_IDA=14;CODERED_VARIANTS/default.idaNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

53、NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a=CodeRed;CODERED_VARIANTS/default.idaXXXX

54、XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u

55、9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a=CodeRedII;if(KEY_IDAinside$matched&strlen($uri)IISISAPI_INDEXING_BUFSIZE)if(CODERED_VARIANTS$uri)alert(www_iis_source,codered_alert,tcp.connsrc,tcp.conndst,substr(CODERED_VARIANTS$uri,0,1024),-AlertDetails,ALERT_ID,27-64,ALERT_CONFIDENCE,_:c

56、onfidence(90),ALERT_SEVERITY,high,ALERT_IMPACT,codeexecution,ALERT_EVENT_TYPE,attack,ALERT_ASSESSMENT,unknown,CONTEXT,attack:context(codered_alert),IP_PROTO_NUM,6,IP_ADDR_SRC,tcp.connsrc,PORT_SRC,tcp.connsport,IP_ADDR_DST,tcp.conndst,PORT_DST,tcp.conndport,CMD_NAME,$ci_:CLIENT_METHOD,HTTP_URL,$uri);

57、record_:CURRENT_TIME(),tcp.connsrc,tcp.connsport,tcp.conndst,tcp.conndport,CODERED_VARIANTS$uri,$uritoMYRECORDER;misc_attacks:rec(_:CURRENT_TIME(),scope(),CODERED_VARIANTS$uri,tcp.connsrc,tcp.conndst);return(1);elsealert(www_iis_source,iisindexing_alert,tcp.connsrc,tcp.conndst,strlen($uri),-AlertDet

58、ails,ALERT_ID,27-65,ALERT_CONFIDENCE,_:confidence(90),ALERT_SEVERITY,high,ALERT_IMPACT,codeexecution,ALERT_EVENT_TYPE,attack,ALERT_ASSESSMENT,unknown,CONTEXT,attack:context(iisindexing_alert),IP_PROTO_NUM,6,IP_ADDR_SRC,tcp.connsrc,PORT_SRC,tcp.connsport,IP_ADDR_DST,tcp.conndst,PORT_DST,tcp.conndport

59、,CMD_NAME,$ci_:CLIENT_METHOD,HTTP_URL,$uri);record_:CURRENT_TIME(),tcp.connsrc,tcp.connsport,tcp.conndst,tcp.conndport,IISIndexingServiceBufferOverflowAttempt,$uritoMYRECORDER;misc_attacks:rec(_:CURRENT_TIME(),scope(),IISIndexingServiceBufferOverflowAttempt,tcp.connsrc,tcp.conndst);return(1);NCODE里讲

THE END
1.《C#项目开发实战》:掌握实用技能,打造专业级应用C#语言因其与.NET框架的紧密集成,在软件开发领域中占有重要地位。它不仅用于构建桌面应用程序,还广泛应用于Web开发、移动应用开发、游戏开发等多个领域。随着技术的发展,C#语言的需求持续增长,特别是在企业级应用和云服务领域。C#语言的市场需求表现在以下几个方面: https://blog.csdn.net/asd343442/article/details/144330673
2.Android应用签名与发布指南本文详细介绍了如何在AndroidStudio中生成正式签名的APK文件,确保应用能够在GooglePlay等平台上顺利发布。文章还提供了相关的注意事项和常见问题解决方法。 在开发完成Android应用后,为了能够将其发布到Google Play或其它应用市场,需要对应用进行正式签名。下面是在Android Studio中生成正式签名APK的步骤: https://www.php1.cn/detail/Android_BoWen_dddc413d.html
3.软件注册码RSA签名实现Demo(C#)吾爱破解生成用于签名的私钥和公钥(2048位)私钥用于生成签名,保存在软件开发者手中,如果泄露就可能随便生成注册https://www.52pojie.cn/thread-1965537-1-1.html
4.c#实现手写软签名c# picturebox 简单签名,仿照写字板 上传者:hanlianbu时间:2016-03-25 C# Winform 手写签名,自动保存签名至本地文件夹。签名流畅无卡顿。 C# Winform 手写签名,自动保存签名至本地文件夹。 签名流畅无卡顿。 触摸屏上也可以正常使用 上传者:m0_62355555时间:2022-05-03 https://www.iteye.com/resource/longge8804-10671571
5.一键登录红包数量提醒微信用户识别男女签名备注地理位置等暂无标签 C# 保存更改 发行版 暂无发行版 WechatYUNchart 开源评估指数 生产力 创新力 稳健性 协作 贡献者 软件 贡献者(2) 全部http://git.oschina.net/bolanzw/WechatYUNchart
6.c#手写签名打印并上传(asp.net)开发实例源码下载<!--签名区域--> <!--打印区域--> <!--把Jqurey引入到项目中--> <!--把jSignature引入到项目中--> https://www.haolizi.net/example/view_149305.html
7.C#中的方法签名是什么?签名指的是返回值和参数。 比如 public void A ( int p1,int p2){}和 public void B https://www.imooc.com/wap/wenda/id/446787
8.C#自定义签名章实现方法C#教程这篇文章主要介绍了C#自定义签名章实现方法,涉及C#图形绘制的相关实现技巧,非常具有实用价值,需要的朋友可以参考下GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!】 本文实例讲述了C#自定义签名章实现方法。分享给大家供大家参考。具体实现方法如下: 1 2 3 4 5https://www.jb51.net/article/71402.htm
9.毕业设计开题报告(集合15篇)通过使用考勤管理系统软件,企业可以不耗费人力去专门进行员工考勤的查询,而通过打卡记录来了解每个员工全部的出勤情况,将出勤情况与员工工资、奖金挂钩,达到正负签名: 六、教研室意见: 签名: 注:此表由学生本人填写,一式三份,一份留系里存档,指导教师和学生本人各保存一份。 毕业设计开题报告13 https://www.ruiwen.com/kaitibaogao/6165819.html
10.C#程序脱壳,去除强签名由于.net程序的运行机制,利用Reflector,ilspy等反射工具很容易就能看到原代码。很多程序都做了代码混淆,加壳。代码混淆后反编译乱码,不容易理解;加壳使反编译工具不能正常反射,提示无效的程序集。 有些程序还用了强名称程序集 需要做的就是:脱壳、去除强名称、反编译 http://modb.pro/db/180960
11.干货C#根据类生成签名字符串(附DEMO下载地址)现在第三方支付的接口签名机制都是模仿微信签名方式,把参数按ascii码进行排序后再加上key进行md5的加密,前两天因为做Delphi的接口,所以写了一篇《Delphi对TStrings进行排序》,这次我们写一个C#把类结构生成的签名字符串。 视频效果 视频内容 核心代码 代码语言:javascript https://cloud.tencent.com/developer/article/1471798?areaSource=102001.6&traceId=PxUwTRgTp6bANdUXLEjw9
12.在C#中使用BouncyCastle对数据进行签名和验证using Org.BouncyCastle.Asn1;using Org.BouncyCastle.Asn1.X509;using Org.BouncyCastle.Crypto;using Org.BouncyCastle.Crypto.Encodings;using Org.BouncyCastle.Crypto.Engines;using Org.BouncyCastle.Crypto.Generators;using Org.BouncyCastle.Crypto.Parameters;using Org.BouncyCastle.Crypto.Prng;using Org.BouncyCastle.Mahttps://www.jianshu.com/p/b2614dbfb5cd
13.如何使用C#中的Bouncycastle将Pem公钥转换为rsa公钥?简介在调用Java后端接口,需要使用后端提供的pem私钥,在Unity中使用RSA算法对参数进行签名时,需要先将pem文件中的私钥内容转换为c#支持的xml格式再进行签名,该工具提供了转换及签名的函数,已上传至我的开发框架SKFramework中的开发工具包中,如图所示: 依赖第三https://cloud.tencent.com.cn/developer/information/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8C%EF%BC%83%E4%B8%AD%E7%9A%84Bouncycastle%E5%B0%86Pem%E5%85%AC%E9%92%A5%E8%BD%AC%E6%8D%A2%E4%B8%BArsa%E5%85%AC%E9%92%A5%EF%BC%9F