重点介绍“Netsuite.DLL V1.05”的几个函数
*RSA------------*注意错误会直接抛出
Local loRSA ;
, lnKeySize;
, xml ;
, pem_pkcs1;
, pem_pkcs8
*从DLL中获取RSA
m.lnKeySize = 512 &&1024
m.loRSA = oFunction.GetRSA( m.lnKeySize )
Clear
?Transform(lnKeySize) + '私钥(xml):'
xml = m.loRSA.ToXML()
??xml
?Transform(lnKeySize) + '私钥(PKCS#1):' &&用于解密(加密需要私钥需要最强大的第三方DLL....)
pem_pkcs1 = m.loRSA.ToPEM().ToPEM_PKCS1()
?pem_pkcs1
?Transform(lnKeySize) + '公钥(PKCS#8):' &&用于加密
pem_pkcs8 = m.loRSA.ToPEM().ToPEM_PKCS8()
?pem_pkcs8
?'RSA待加密字符串:'
m.lcstr = 'Netsuite.Function For ZHZ V1.0'
??m.lcstr
?'RSA加密:'
Local lcenstr
m.lcenstr = m.loRSA.Encode( m.lcstr )
??m.lcenstr
?'RSA解密:'
m.lcdestr = m.loRSA.DecodeOrNull( m.lcenstr)
??m.lcdestr
?'签名SHA1:'
Local lcsign
m.lcsign = m.loRSA.Sign("SHA1", m.lcstr )
??m.lcsign
*m.loRSA.Sign("SHA224", m.lcstr )没有,以后再补
*m.loRSA.Sign("SHA256", m.lcstr )有
*m.loRSA.Sign("SHA384", m.lcstr )没有,以后再补
*m.loRSA.Sign("SHA512", m.lcstr )没有,以后再补
*m.loRSA.Sign("SHA3" , m.lcstr )没有,以后再补
??m.lcsign
?'校验签名:'
??m.loRSA.Verify("SHA1", m.lcsign, m.lcstr)
*用pem文本创建RSA
Local loRSA2
m.loRSA2= oFunction.GetRSA2( pem_pkcs8 )
?'用PEM公钥(PKCS#8)新创建的RSA是否和上面的一致:'
?'XML:'
??m.loRSA2.ToXML() == m.loRSA.ToXML()
?'PKCS1:'
??m.loRSA2.ToPEM().ToPEM_PKCS1() == m.loRSA.ToPEM().ToPEM_PKCS1()
?'PKCS8:'
??m.loRSA2.ToPEM().ToPEM_PKCS8() == m.loRSA.ToPEM().ToPEM_PKCS8()
*用xml文本创建RSA
Local loRSA3
m.loRSA3= oFunction.GetRSA3( xml )
?'用xml文本新创建的RSA是否和上面的一致:'
?'XML:'
??m.loRSA3.ToXML() == m.loRSA.ToXML()
?'PKCS1:'
??m.loRSA3.ToPEM().ToPEM_PKCS1() == m.loRSA.ToPEM().ToPEM_PKCS1()
?'PKCS8:'
??m.loRSA3.ToPEM().ToPEM_PKCS8() == m.loRSA.ToPEM().ToPEM_PKCS8()
*--声音播放函数(异步线程(默认) )
*--载入H文件
#INCLUDE Netsuite.H
Local loDevice ;
, lisTask ;
, lcFileName
m.lcFileName = Getfile("mp3,wav")
m.lisTask = .T.
If Empty( m.lcFileName ) Then
Return
Endif
*--播放声音
*m.oFunction.MmPaly( cFile, lisTask ) &&可以异步,同步
*cFile 必传 文件路径
*lisTask 非必传 默认.T.异步线程|.F. 同步线程
m.loDevice = m.oFunction.MmPaly( m.lcFileName , m.lisTask )
*--判定
?"已停止:" + Transform( m.loDevice.PlaybackState = Stopped )
?"正在播放:" + Transform( m.loDevice.PlaybackState = Playing )
?"暂停中:" + Transform( m.loDevice.PlaybackState = Paused )
*--动作
*!* m.loDevice.Play() &&播放
*!* m.loDevice.Pause()&&暂停
*!* m.loDevice.Stop &&停止
*--文本转语音播报(默认异步线程),其实就是Edge的大声朗读,遗憾C# WebSocket不支持Win7平台
*m.oFunction.Say( string str,string voice,string outfilename ="say.mp3", bool isTask = true)
*str 必传 文本
*voice 非必传 哪个M播音员 默认 "zh-CN-XiaoxiaoNeural"
*OutFileName 非必传 输出音频 默认DLL所在目录下say.mp3
*isTask 非必传 默认.T.异步线程|.F. 同步线程
oSay = m.oFunction.Say("今天天气真他妈热啊!")
[此贴子已经被作者于2023-9-19 11:44编辑过]