我要求在Web服务调用中将一些值从移动设备传递到服务器,因此我打算以JSON格式传递所有值,如下所示
{
"nameservice": [
{
"id": 7413,
"name": "ask"
},
{
"id": 7414,
"name": "josn"
},
{
"id": 7415,
"name": "john"
},
{
"id": 7418,
"name": "R&R"
}
]
}
Run Code Online (Sandbox Code Playgroud)
以下是我的服务电话
@RequestMapping("/saveName")
@ResponseBody
public String saveName(String acc)
{jsonObject = new JSONObject();
try
{
);
System.out.println(acc);
jsonObject.accumulate("result", "saved ");
}
catch(Exception e)
{
e.printStackTrace();jsonObject.accumulate("result", "Error Occured ");
}
return jsonObject.toString();
}
Run Code Online (Sandbox Code Playgroud)
我试图通过这种方式调用上述服务
localhost:8080/service/saveName?acc={ "nameservice": [ { "id": 7413, "name": "ask" }, { "id": 7414, "name": "josn" }, { "id": 7415, "name": …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过url将加密数据发送到另一个站点(使用file_get_contents("anotherUrl.php?hash=$encryptedString").问题是,有时,加密包含一些特殊字符,如+,这会导致解密失败.
这是我的加密/解密方法:
public function encrypt($string, $key)
{
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
}
public function decrypt($encrypted, $key)
{
return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}
Run Code Online (Sandbox Code Playgroud)
这是一个包含a的加密字符串示例+,我猜这会导致解密失败.
oWCrVPaS+5GbxcQFc0fulUk/zRAkDD60av4zlPiWskE=
任何想法我应该如何解决这个问题?我试图做urlencode()和urldecode()哈希,但这似乎也导致加密打破.有没有办法更改加密算法,使其只返回url安全字符?
我使用以下代码来加密/解密查询字符串并将其从一个页面传递到另一个页面.结果输出缺少'+'(请参阅问题的底部).我可以做些什么来确保'+'通过,因为我已经在使用urlencode/urldecode?
//加密页面
protected void Page_Load(object sender, EventArgs e)
{
string text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Response.Write("256:" + Decrypt256(Encrypt256(text)));
Response.Write(string.Format("<br/><a href=\"decrypt.aspx?p={0}\">{0}</a>", HttpUtility.UrlEncode(Encrypt256(text))));
}
private const string AesIV256 = @"!QAZ2WSX#EDC4RFV";
private const string AesKey256 = @"5TGB&YHN7UJM(IK<5TGB&YHN7UJM(IK<";
private string Encrypt256(string text)
{
// AesCryptoServiceProvider
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
aes.BlockSize = 128;
aes.KeySize = 256;
aes.IV = Encoding.UTF8.GetBytes(AesIV256);
aes.Key = Encoding.UTF8.GetBytes(AesKey256);
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
// Convert string to byte array
byte[] src = Encoding.Unicode.GetBytes(text);
// encryption
using (ICryptoTransform encrypt = aes.CreateEncryptor())
{ …Run Code Online (Sandbox Code Playgroud) 我正在将Web应用程序中的链接发送到用户邮件(用于确认用户注册),如下所示:
<a target="_blank" href="http://localhost:2817/ConfirmRegistration?confirm=Y0tcmGepe7wjH7A1CT1IaA==">
http://localhost:2817/ConfirmRegistration?confirm=Y0tcmGepe7wjH7A1CT1IaA==
</a>
Run Code Online (Sandbox Code Playgroud)
但是Chrome会警告此消息:

查询字符串是否无效?我该如何解决?
顺便说一句:
我的应用程序在C#和MVC3中
可能重复:
在URL中传递base64编码的字符串
我正在创建一个将发送给用户的网址.用户然后单击该URL,此URL告诉我该用户是谁.
所以我使用base64编码添加到此链接的所有数据.然而,当用户点击链接时,他被重定向到404页面,因为编码的网址中有"/",而zend框架路由器找不到任何路由.
我有什么方法可以压制'/'?我试过htmlentities但它没用.
我想创建和加密获取在 url 中传递的变量和异步调用
例如:
$textToEncrypt = "Hello World";
$encryptionMethod = "AES-256-CBC";
$secretHash = "cVb67YtfAz328oOikl96vBn";
$iv = "adfrf54dmnlo09ax";
$encryptedText = openssl_encrypt($textToEncrypt,$encryptionMethod,$secretHash, 0, $iv);
Run Code Online (Sandbox Code Playgroud)
结果是:W2p0S2qlSierJnIcA/AM3g==
有一些特殊字符, == 总是在最后。我要防止这种情况!如何仅输出 0-9 和 AZ 和 az 字符?
谢谢
我在CakePHP上相当新,因为有一些基本的东西,我曾经用Zend Framework做的,我用Cake打败了.
我正在开发一个项目,我必须将命名参数传递给控制器/动作.设置路由并传递参数非常简单,我的问题是当参数是urlencoded网址时.
例如:http://www.cakephp.com/controller/action/http%3A%2F%2Fwww.google.com无论控制器和操作设置如何,都会抛出404,但是传递/ controller/action/http: //www.google.com以某种方式工作,唯一的问题是它将http标识为命名参数.换句话说,如果我做/controller/action?url=http://www.google.com它会工作.
我用于此的工作是将值作为base64编码的字符串传递,但它带来了一些限制.例如,如果它是API,则无法保证使用API的系统可以将base64编码为字符串.
无论如何,最好的解决方案仍然是将url编码的字符串传递给命名参数.问题是,为什么CakePHP不接受urlencoded字符串作为参数,为什么它会抛出404?
在此先感谢所有人.
我想采用JSON字符串并对其进行加密/散列/编码,以便我可以将其放入URL中,以便它类似于下面所示的内容:
var stringToEncode = JSON.stringify({foo: 'baz', bar: [1,2,3,4,5], baz: {fizzle: 'buzz'}});
Run Code Online (Sandbox Code Playgroud)
'www.myrandomurl.com/someurl/123fas234asf1543rasfsafda'
然后我想采用加密/散列/编码的字符串,并将其解码回原始的JSON字符串,以便我可以使用它绑定到单页AngularJS应用程序上的各种元素.
JSON字符串的内容不敏感,因此不需要安全性或复杂的散列.唯一的条件是它需要是一个"URL/URI'安全'"字符串,为了虚荣目的进行哈希处理,如上所示.
我对加密/编码的知识有限,但是我想过简单地将字符串编码为Base64并再次解码.
这是最好的方法吗?如果不是,有什么更好的方法?
我正在尝试将URL作为参数传递,但该URL也有参数.当然,这些参数很重要,必须传输和正确解释.
例如:http: //example.com/myclicktrackingscript.php?source = sidebar&url = http://example.com/redirect_to.php?site = site1
(是的,我知道,我可以在一个文件中单击跟踪并重定向所有,但在某些特定情况下,我不能:有时我需要传递带参数的任何URL作为参数)
到目前为止,我已经使用了URL重写:http: //example.com/redirect_to.php?site = site1 => http://example.com/redirect/site1/
..但这不是很方便(太多需要更多灵活性的具体情况)
有没有更好的方法呢?
我的猜测可能是散列参数URL:
例如:http://example.com/myclicktrackingscript.php? source = sidebar $ url = REJREJ12333232rerereE
......但是如何正确地"去除"它呢?
我从来没有使用过这样的技术,有没有关于如何做的任何例子/提示/建议?
谢谢
我正在加密用户 ID,crypto-js通过 url 发送它,如下所示,以便用户在单击时验证它:
http://localhost:3000/api/customer/activate/U2FsdGVkX1DXzzLuf9TgBf31Mc2V/QBVAN05PovlNM
这是加密的用户 ID:
U2FsdGVkX1DXzzLuf9TgBf31Mc2V/QBVAN05PovlNM
使用加密js encrypt:
crypto.AES.encrypt(term.toString(), config.CRYPTO_PASSPHRASE_RES).toString(crypto.enc.Utf8)
Run Code Online (Sandbox Code Playgroud)
当我运行 API 时,它返回route not found,当我/从加密的用户 ID 中删除时,它起作用了。
如何防止 crypto-js 添加/到加密 ID 中?
我正在使用node.bcrypt.js哈希返回node.js中的十六进制数字作为密码重置令牌.
user.reset_password_token = require('crypto').randomBytes(32).toString('hex'
);
Run Code Online (Sandbox Code Playgroud)
在我在网址中传递令牌之前,我是否还应该对该令牌进行base64编码(即:链接重置电子邮件)?
这样做有什么好处吗?
我似乎记得base64编码可以包含正斜杠,这会弄乱路径:
var token = user.reset_password_token;
//is there any benefit to doing base64 encoding?
var encoded_token = new Buffer(token).toString('base64');
var reset_link = 'http://example.com/reset/'+ encoded_token;
sendResetLink( reset_link );
Run Code Online (Sandbox Code Playgroud) 我正在创建一个将生成JWT令牌的方法。该方法的一部分从我的web.config中读取一个值,该值用作“秘密”,用于生成用于创建JWT令牌签名的哈希。
<add key="MySecret" value="j39djak49H893hsk297353jG73gs72HJ3tdM37Vk397" />
Run Code Online (Sandbox Code Playgroud)
最初,我尝试使用以下命令将“秘密”值转换为字节数组。
byte[] key = Convert.FromBase64String(ConfigurationManager.AppSettings["MySecret"]);
Run Code Online (Sandbox Code Playgroud)
但是,到达此行时引发了异常。
输入内容不是有效的Base-64字符串,因为它包含非base 64字符,两个以上的填充字符或填充字符中的非法字符。
因此,我查看了OAuth代码,然后使用了另一种方法将base64字符串更改为字节数组
byte[] key = TextEncodings.Base64Url.Decode(ConfigurationManager.AppSettings["MySecret"]);
Run Code Online (Sandbox Code Playgroud)
此方法没有问题。在我看来,他们在做同样的事情。将Base64文本值更改为字节数组。但是,我一定会丢失一些东西。为什么Convert.FromBase64String失败并TextEncodings.Base64Url.Decode起作用?
我Security在CakePHP 3.2中使用实用程序进行加密和解密.我打电话的时候
Security::encrypt('string', 'key') //密钥长度为32或更多
在字符串上的方法,它返回带有一些无效字符的加密字符串,如下所示:
8e88c050ff20cb12984bf1af24b11fc7ada198082c67d6b3da7170572d5bcd54plp21ķ;ܝ%N
我想用这个字符串url.但由于存在一些无效字符,因此无法正常工作.
现在我想避免这些角色.有没有办法避免这些角色?
encryption ×6
base64 ×5
php ×5
url ×3
cakephp ×2
json ×2
node.js ×2
arrays ×1
asp.net ×1
c# ×1
c#-4.0 ×1
cryptography ×1
cryptojs ×1
express ×1
get ×1
html ×1
hyperlink ×1
java ×1
javascript ×1
jwt ×1
mcrypt ×1
param ×1
security ×1
spring ×1
string ×1
url-encoding ×1
urlencode ×1
web-services ×1