请参阅我的早期问题:delphi 7- 使用DEC加密,并用PHP OpenSSL解密 我的Delphi 7客户端应用程序(ICS组件)将基本64编码数据作为HTTP POST请求中的参数发送到PHP Web服务,并在其中使用base64_decode函数解码.但是,PHP中所得的解码字符串与最初在Delphi中编码的字符串不同.我正在使用的Delphi Base64编码函数是来自DEC(DEC V5.2)库. 用于将数据从Delphi发送到PHP的示例代码实现(并接收响应)如下: delphi侧: uses OverbyteIcsHttpProt, OverbyteIcsLogger, OverbyteIcsWSocket, OverbyteIcsSslHttpRest, StrUtils, DecFmt; var d: String; StatCode: Integer; sAPIResponse: WideString; APIR
以下是关于 delphi 的编程技术问答
我需要一种将字符串编码到Delphi 7和PHP 中的MIME/BASE64的方法 这两个编码器必须兼容:) 解决方案 自Delphi 6以来,已经包括了单位ENCDECD;以下是MIME兼容的base64功能. This flexvn 缓存帖子" rel =" nofollow noreferrer">原始帖子并非总是在线上)解释了如何使用encddecd单元在php和delphi之间做base64的事情. unit EncdDecd; interface uses Classes, SysUtils; procedure EncodeStream(Input, Output: TStream); procedure DecodeStream(Input, Output: TStream); function EncodeString(const Input: string): string; function DecodeString(const I
大家好, 我有一个小的PHP代码,我想在Delphi中转换,并且有一些麻烦... 这是PHP代码: $from = "121.198.0.0"; $to = "121.198.255.255"; $arry1 = explode(".", $from); $arry2 = explode(".", $to); $a1 = $arry1[0]; $b1 = $arry1[1]; $c1 = $arry1[2]; $d1 = $arry1[3]; $a2 = $arry2[0]; $b2 = $arry2[1]; $c2 = $arry2[2]; $d2 = $arry2[3]; while ($d2 >= $d1 || $c2 > $c1 || $b2 > $b1 || $a2 > $a1) { if ($d1 > 255) { $d1 = 1; $c1++; } if (
使用Delphi,我想使用WinSock将短信发送给我的Web服务器,然后在服务器上使用电子邮件PHP函数发布消息. 首先,我完成了发送过程(过程发送程序):它读取文本文件(日志)并将其发布到我的服务器上.在服务器上,该消息由AA电子邮件PHP函数命名email.php(请参见下面的该功能的内容): Procedure SendEmail; var WSADat:WSAData; // winsock.pas Texto:TextFile; Client:TSocket; Info,Posting,Linha,Content:String; SockAddrIn:SockAddr_In; // winsock.pas begin try if not FileExists(Log) then exit; AssignFile(Texto, Log); // text to be sent Reset(Texto); while not Eof(Texto) do begi
我有一个空的Delphi ClientDataSet CDS文件设置,其中所有我需要的所有列/标头/数据类型.我想使用PHP将关联数组附加到CD行中.这可能吗? 数组可以简单地为: { 1: {Name:Captain, Phone:18001234567} 2: {Name:Jack, Phone:18009876543} 3: {Name:Sparrow, Phone:18887892345} } 我选择了PHP,因为我精通该语言,而我的Web服务器是共享的Linux主机.基本上我不能在这里运行Delphi.我对在这种环境中可以使用的其他选项开放.谢谢! 编辑: 有关我的决议,请参见这篇文章的评论. 解决方案 我建议您不要直接写入CDS文件. 相反/xmlxform.txmltransformprovider" rel =" nofollow"> txmltransformprovider ,在PHP侧,您只需像往常一样将
我正在使用Delphi 2009,我在这里看到的大多数答案都是针对2010年 我试图将加密(Delphi)同步为解密(PHP)和失败. 在Delphi中生成加密字符串: program Project4; {$APPTYPE CONSOLE} uses SysUtils, DCPcrypt2, DCPsha1, DCPblockciphers, DCPdes, EncdDecd; var des: tdcp_des; enc,dec: ansistring; begin try des:=tdcp_des.Create(nil); des.InitStr('test', tdcp_sha1); enc:=encodestring(des.EncryptString('this is a test')); des.Free; des:=tdcp_des.Create(nil); des.InitStr('te
我目前正在使用Delphi 7中的MD5哈希使用此代码: function MD5(const fileName : string) : string; var idmd5 : TIdHashMessageDigest5; fs : TFileStream; begin idmd5 := TIdHashMessageDigest5.Create; fs := TFileStream.Create(fileName, fmOpenRead OR fmShareDenyWrite) ; try result := idmd5.AsHex(idmd5.HashValue(fs)) ; finally fs.Free; idmd5.Free; end; end; 我正在尝试获得与PHP功能相同的输出 md5_file() 我环顾四周,常见问题似乎是在编码而不是用零填充,但是我不知道如何使用tidhashmessagedige
我在Lockbox3和PHP McRypt方面遇到了麻烦.我不能将IV传递给PHP. delphi code : var Codec: TCodec; CL: TCryptographicLibrary; PlainStream: TStringStream; CipherStream: TMemoryStream; begin PlainStream := TStringStream.Create(Edit1.Text); CipherStream := TMemoryStream.Create; CL := TCryptographicLibrary.Create(nil); Codec := TCodec.Create(nil); Codec.CryptoLibrary := CL; Codec.ChainModeId := uTPLb_Constants.CBC_ProgId; Codec.StreamCipherId := u
我正在尝试使用IDHTTP和PHP脚本在MySQL数据库上发布插入.这是要在数据库中插入的PHP脚本: $mysqli = new mysqli($servidor, $usuario, $senha, $banco); // Caso algo tenha dado errado, exibe uma mensagem de erro if (mysqli_connect_errno()) trigger_error(mysqli_connect_error()); $iduser = quoted_printable_decode($_POST['iduser']); $nome = quoted_printable_decode($_POST['nome']); $data = quoted_printable_decode($_POST['data']); $
我想将此PHP数字签名功能重写为Delphi代码. function SaySig() { $privKeyFilePath = "c:\temp\myrsakey.pem"; $data = "sign this string"; $fp = fopen($privKeyFilePath, "r"); $priv_key = fread($fp, 8192); fclose($fp); $privatekeyid = openssl_get_privatekey($priv_key); openssl_sign($data, $signature, $privatekeyid, OPENSSL_ALGO_SHA1); openssl_free_key($privatekeyid); $sig = base64_encode($signature); echo "
"; echo "Signature:".$sig."
我使用Rijndael Cipher从PHP发送从PHP发送到Delphi有问题. 我在php侧使用mcrypt,而dcp_rijndael在delphi方面使用. 目前我有以下代码. php: function encRJ($key, $iv, $data) { $r = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_CBC, $iv); $r = base64_encode($r); return $r; } 和在Delphi中: function decRJ(Data: string; Key: string; IV: string): string; var ciph: TDCP_rijndael; begin Data := Base64DecodeStr(Data); ciph:= TDCP_rijndael.Create(Self);
我的Delphi应用程序使用Turbopower Lockbox 3使用AES 256加密宣传信息.我现在想使用PHP解密此信息. 但是Turbopower Lockbox 3存在一些互操作性问题. 请在此处查看Lockbox 3作者的帖子以获取详细信息: 和stackoverflow上的类似帖子 delphi&php中的安全关键加密解决方案? P> 在Lockbox 3中,在加密期间,您设置了一个密码.然后将此密码用作生成密钥和IV的种子.那么,是否有人能够模仿PHP侧的关键生成方法?还是有什么方法可以通过Lockbox 3生成键/IV并将其放入我的PHP代码中,以便可以解密文件? 解决方案 iv 如前所述,iv nonce被添加到密文消息.因此,要在PHP侧获取它,只需提取前8个字节. 键 您需要确定共享秘密是密码弦格式还是二进制密钥格式. Symetric密钥类(tsymetrickey)具有一个方法saveToStream(),它可以
我最近偶然发现了一种非常奇怪的行为.当我在程序中使用TactionMainMenubar(或TactionToolbar)时,请编译和运行,然后启动Photoshop CS5或Internet Explorer 9时,ActionMainMenubar(and ActionToolbar)将失去所有设置.分配的colormap中定义的颜色消失了,字体设置也丢失了.有人以前看过这一点,知道了吗? D2007 Pro(应用了所有更新),D2010 Pro(应用的所有更新),Vista Home Premium 32位,NVIDIA GFORCE 8600 GT,已安装最新的驱动程序. 复制的步骤: 将TactionManager和TactionMainMenubar放在表格上 创建一些菜单项的类别 将类别拖到ActionMainMenubar 将TwilightColorMap分配到ActionMainMenubar 运行程序 开始IE9或Photoshop CS
我需要一种在Delphi桌面应用程序中标记照片的方法,就像Facebook的方式一样. 包括某种方法可以轻松添加人的标签,然后将鼠标悬停在照片中的人上以显示标签. 给出的答案中的两个建议:" delphi components用于脸部识别标记"不要解决这个问题. ,但我不知道从哪里开始,也无法在网络上找到有关如何执行此操作的想法. Facebook如何做?也许有Delphi的组件可以允许. 尝试实现类似Facebook的标签的最佳方法是什么? P.S.这是Facebook的某些API定义: http://wiki.developers. facebook.com/index.php/photos.addtag 这是一个Java程序,它实现了我想在Delphi App中执行的面部标记功能: fb-photo-uploader 解决方案 您引用的API的关键参数是图片ID,坐标和标签.该标签可以是Facebook用户的用户ID,也可以是自由形式的文
我有一个要求,在我必须确定照片是否被损坏并因此标记为 的情况. 另一件事,我需要确定图像是否错误扩展.我的意思是错误的扩展名是有时候我遇到了一张带有JPG扩展的照片,但是当我将这张照片加载到Irfanview中时,它报告了该照片的格式不同. . 我该如何在delphi中执行此操作. 解决方案 我有一个要求,在我必须确定照片是否被损坏并因此标记为 的情况. 您可以尝试一些事情,但是使用某些文件格式(例如:BMP,JPEG在某种程度上)只有人才才能最终决定文件是否正常或损坏.最简单的测试是简单地将文件加载到相应的对象(tjpegimage,tpngobject等)中.如果加载时会得到异常,那么您肯定会有一个损坏的文件.不幸的是,如果没有例外,您不能真正说该文件没有损坏.我已经看到损坏的JPEG文件,这些文件将正加载到Delphi TImage中,并且可以使用Windows的Image Viewer打开,但显然被人类观察者损坏.使用BMP映像,它甚至更清晰:
是否有任何解决方案可以编程检查和挂断/拒绝在Delphi中的Android上拨打/发出呼叫? 解决方案 首先,您必须拥有自己的broadcastreceiver单元 - 您可以从unit CSBroadcastReceiver; interface uses System.Classes ,System.SysUtils {$IFDEF ANDROID} ,Androidapi.JNI.Embarcadero ,Androidapi.JNI.GraphicsContentViewText ,Androidapi.Helpers ,Androidapi.JNIBridge ,Androidapi.JNI.JavaTypes ,Androidapi.JNI.App {$ENDIF} ; type {$IFNDEF ANDROID} JIntent = class end; JContext = class end; {$ENDIF} TCSBroadcastReceiver= cla
我已经开发了用于绘制一些形状的应用程序(主要是行),现在我需要能够将草图存储到文件中,我知道Delphi已在例程中构建以实现对象持久性,但是我从未使用过. P> 有人可以告诉我,如果我必须持久对象也有引用其他对象(将存储到),我可以使用对象持久性,我有可以连接到其他tline tline对象等的tline对象. 最好使用此功能或编写自定义过程以将/读取对象存储/从文件中存储. 解决方案 我过去使用过的一种方法是将我的对象属性存储在XML文件中,编写自定义"保存"例程,该例程添加到传递的IXMLNODE中,以及一个从传递的IXMLNODE读取的新构造函数.我将组件存储为节点,属性为属性(除非属性是另一个对象,否则它将是一个子节点). 我相信Delphi Jedi项目中有一些例程可以为您处理组件流,但是我没有直接使用它们,因为我的大多数XML流是手工完成的,因为我的对象非常简单,并且可以渲染只有少数属性. 其他解决方案 内置的对象持久性主要是为DFM流式传输组件的设
我正在尝试在Windows XP的Delphi 7中制作一个警报系统.我必须在数据库中注册警报(MS SQL Server 2000).但是,如果服务器下降怎么办???好吧,我可以想象我必须坚持塔拉姆类型的对象.那么,我该怎么做呢?也许从tcomponent继承???拜托,我该怎么做? 非常感谢. 我对我的英语感到抱歉. 在这里您有更多信息... 塔拉姆(Talarm)是基本上从图案下降的课程.还有10个类来自Talarm(某些类型的警报). Talarm有一个名为FPARAMS:TPARAMS的字段,孩子课只有一个执行方法. fparams可能是不同类型的:talarmx1_params,talarmx2_params等,等等等. 解决方案 您可以从tpersistent继承,然后可以使用tjvappxmlfilestorage( jvcl )序列化Talarm类的组件. 保存对象 uses JvAppXMLStorage; Procedur
我如何确定程序的一个实例是否正在运行? 我以为我可以用数据文件做到这一点,但这只是凌乱:( 我想这样做,因为我只希望有一个实例在某个时候打开. 解决方案 您可以创建信号量并停止执行(将代码放入 *.dpr文件中)并将运行应用程序带到屏幕. var Semafor: THandle; begin { Don't start twice ... if already running bring this instance to front } Semafor := CreateSemaphore(nil, 0, 1, 'MY_APPLICATION_IS_RUNNING'); if ((Semafor 0) and { application is already running } (GetLastError = ERROR_ALREADY_EXISTS)) then begin RestoreWindow('TMyApp