最近出现了一个问题,即使用TripleDES标准将请求字符串加密的支付处理器连接到API以用作令牌.我们的应用程序使用ColdFusion运行,它有一个加密标签 - 支持TripleDES - 但是我们得到的结果并不是支付处理器所期望的.
首先,这是支付处理器所期望的结果令牌.
AYOF+kRtg239Mnyc8QIarw==
Run Code Online (Sandbox Code Playgroud)
下面是我们正在使用的ColdFusion的片段,以及结果字符串.
<!--- Coldfusion Crypt (here be monsters) --->
<cfset theKey="123412341234123412341234">
<cfset theString = "username=test123">
<cfset strEncodedEnc = Encrypt(theString, theKey, "DESEDE", "Base64")>
<!---
resulting string(strEncodedEnc): tc/Jb7E9w+HpU2Yvn5dA7ILGmyNTQM0h
--->
Run Code Online (Sandbox Code Playgroud)
如您所见,这并没有返回我们希望的字符串.寻求解决方案,我们为此过程抛弃了ColdFusion,并尝试在PHP中重现令牌.
现在我知道各种语言以不同的方式实现加密 - 例如在过去管理C#应用程序和PHP后端之间的加密,我不得不玩填充以使两者交谈,但是我的经验是,PHP在加密标准方面通常表现得很好.
无论如何,我们尝试的PHP源代码和结果字符串.
/* PHP Circus (here be Elephants) */
$theKey="123412341234123412341234";
$theString="username=test123";
$strEncodedEnc=base64_encode(mcrypt_ecb (MCRYPT_3DES, $theKey, $theString, MCRYPT_ENCRYPT));
/*
resulting string(strEncodedEnc): sfiSu4mVggia8Ysw98x0uw==
*/
Run Code Online (Sandbox Code Playgroud)
正如您可以清楚地看到的那样,我们有另一个字符串,它与支付处理器预期的字符串和ColdFusion生成的字符串不同.提示头对墙集成技术.
经过与支付处理器的多次往复通信(很多代表说"我们无法解决编码问题,你必须做错了,阅读手册")我们最终被升级为超过一对脑细胞在一起摩擦,能够退后一步,实际观察和诊断问题.
他同意,我们的CF和PHP尝试没有产生正确的字符串.经过快速搜索,他还同意这不是我们的来源,而是两种语言如何实现他们对TripleDES标准的看法.
今天早上进入办公室时,我们遇到了一封包含Perl源代码片段的电子邮件.这是他们在最终直接使用的代码,用于生成预期的令牌.
#!/usr/bin/perl
# Perl Crypt Calamity (here be...something)
use strict;
use CGI;
use MIME::Base64;
use Crypt::TripleDES;
my $cgi = CGI->new(); …Run Code Online (Sandbox Code Playgroud) 我有这个代码片段:
public static class ExportDatabaseFileTask extends AsyncTask<String, Void, Boolean>
{
private final ProgressDialog dialog = new ProgressDialog(ctx);
protected void onPreExecute();
protected Boolean doInBackground(final String... args);
protected void onPostExecute(final Boolean success);
}
Run Code Online (Sandbox Code Playgroud)
我执行这个线程为
new ExportDatabaseFileTask().execute();
Run Code Online (Sandbox Code Playgroud)
如您所见,我在新的ProgressDialog调用中使用ctx作为Context变量,如何将上下文传递给调用方法?
到这一个:
new ExportDatabaseFileTask().execute();*
Run Code Online (Sandbox Code Playgroud) 我想从日志文件中grep错误并将值保存为错误.我用的时候:
errors = os.system("cat log.txt | grep 'ERROR' | wc -l")
Run Code Online (Sandbox Code Playgroud)
我得到命令工作与否的返回码.我用的时候:
errors = os.popen("cat log.txt | grep 'ERROR' | wc -l")
Run Code Online (Sandbox Code Playgroud)
我得到了命令试图做的事情.
当我在命令行中运行它时,我得到3,因为有多少错误.
任何人都可以在Python中建议另一种允许我保存此bash命令值的方法吗?
谢谢
我想从光标中获取Count列的值.
public Cursor getRCount(String iplace) throws SQLException
{
try {
String strSql = "SELECT COUNT(_id) AS RCount FROM tbName WHERE place= '" + iplace + "'";
return db.rawQuery(strSql, null);
} catch (SQLException e) {
Log.e("Exception on query", e.toString());
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我试图从下面的光标获取此计数列值
Cursor cR = mDbHelper.getRCount(cplace);if (cR.getCount() > 0){long lCount = cR.getLong(0);}cR.close();}
Run Code Online (Sandbox Code Playgroud)
我收到了调试错误.怎么弄?
PS:我可以使用嵌套游标吗?
我正在尝试运行Android MapView示例,并且在Eclipse中遇到了"无法从View转换为MapView"错误.
我的布局如下
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="0jwi0saLYCPGfO-t7glg5bQoBz7jVKWCcgyQWQA"
/>
<LinearLayout
android:id="@+id/zoomview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/mapview"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
和活动代码是
package org.gaz.mapapp;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ZoomControls;
import com.google.android.maps.*;
public class MapView extends MapActivity {
LinearLayout linearLayout;
MapView mapView;
ZoomControls mZoom;
public void onCreate(Bundle savedInstance) {
linearLayout = (LinearLayout) findViewById(R.id.mainlayout);
mapView = (MapView) findViewById(R.id.mapview);
mZoom = (ZoomControls) mapView.getZoomControls();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method …Run Code Online (Sandbox Code Playgroud) 我试图在我的Delphi应用程序中挤压每一点性能,现在我开始使用一个与动态数组一起工作的程序.最慢的一行是
SetLength(结果,Len);
用于初始化动态数组.当我查看SetLength过程的代码时,我发现它远非最佳.呼叫顺序如下:
_DynArraySetLength - > DynArraySetLength
DynArraySetLength获取数组长度(初始化为零),然后使用ReallocMem,这对于启动也是不必要的.
我一直在做SetLength来初始化动态数组.也许我错过了什么?有更快的方法吗?
编辑:描述主算法将占用大量空间,实际上是不必要的,因为它试图优化它的一小部分.一般而言,它是车辆路径问题的证明(http://en.wikipedia.org/wiki/Vehicle_routing_problem).我确实需要数以万计的分配,因为我必须保留所有数据,并将其分开保存.Probalby如果我能想到一些聪明的数据结构会有所帮助,但我能想到的任何东西都会大大增加代码的复杂性.基本上我已经在算法级别上做了我所能做的一切,所以现在我正试图从低级别的东西中获得我能做的一切.所以这是一个相当狭隘的问题:是否有可能增加这个特定的电话.我认为要做到这一点,我需要根据SetLength代码编写自己的初始化函数.并使其内联.
我不知道我做了什么导致这个,但是在IntelliJ中添加新文件或包现在不会将它们添加到subversion中,我必须通过右键单击 - > subverion - > add手动添加它们.
是否有控制此行为的设置?
加密存储在具有强加密(AES 192左右)的数据库中的散列密码和盐渍密码是常识还是我们只是针对明星?
当然,加密密钥不在数据库本身,而是保存在安全的地方.
非常感谢!
下面显示的问题是面试问题
问)你有一个数据类型,比如说C中的X.
要求是获取数据类型的大小,而不声明该类型的变量或指针变量,
而且,当然不使用sizeof运算符!
我不确定此问题是否曾在SO中提出过.
谢谢并问候Maddy
在我的Java程序中,我需要创建当前时刻的实例.我用
Date date = new Date();
Run Code Online (Sandbox Code Playgroud)
这根据主机的系统时钟给出了当前日期和时间.有什么方法可以从在线服务器获取当前日期和时间吗?也许是世界时间服务器?
我看过这篇文章,它描述了我想要的东西,但我担心我需要的帮助比那里提供的更多.
简而言之,我想获得一个不依赖于主机系统时钟的日期和时间.
谢谢!