我正在尝试在C#中加密一些(cookie)数据,然后在PHP中解密它.我选择使用Rijndael加密.我几乎让它工作,除了只有部分文本被解密!我从这个例子开始工作:用C#解密PHP加密字符串
这是我正在加密的文本(JSON)(删除了敏感信息):
{"DisplayName":"xxx", "Username": "yyy", "EmailAddress":"zzz"}
Run Code Online (Sandbox Code Playgroud)
所以我登录到C#app,它从存储的Key和IV创建/编码cookie,然后重定向到应该解密/读取cookie的PHP应用程序.当我解密cookie时,它出现如下:
{"DisplayName":"xxx","F?A ;??HP=D???????4??z????????k?#E???R?j?5?\?t. t?D??"
Run Code Online (Sandbox Code Playgroud)
更新:我已经进一步了,这就是结果
string(96) "{"DisplayName":"xxx","Username":"yyy","EmailAddress"?)???-?J??k/VV-v? ?9?B`7^"
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它开始解密它,但后来搞砸了......
当解密字符串时它出来是正确的(使用填充,我有一个删除填充的函数),但如果我将测试字符串改为一个字符,我会再次得到垃圾:
B?nHL?Ek ?¿??U?lO????O??M??NO/?f.M???L??CC?Y>F??~?qd?+
Run Code Online (Sandbox Code Playgroud)
这是我用来生成随机密钥和IV的c#代码:
更新:我现在只使用静态键/ IV,它们是:
Key: lkirwf897+22#bbtrm8814z5qq=498j5
IV: 741952hheeyy66#cs!9hjv887mxx7@8y
Run Code Online (Sandbox Code Playgroud)
RijndaelManaged symmetricKey = new RijndaelManaged();
symmetricKey.BlockSize = 256;
symmetricKey.KeySize = 256;
symmetricKey.Padding = PaddingMode.Zeros;
symmetricKey.Mode = CipherMode.CBC;
string key = Convert.ToBase64String(symmetricKey.Key);
string IV = Convert.ToBase64String(symmetricKey.IV);
Run Code Online (Sandbox Code Playgroud)
然后,我将密钥和IV保存到数据库中,以便稍后检索以进行编码/解码.
这是完整的加密类:
public static class Encryption
{
public static string Encrypt(string prm_text_to_encrypt, string prm_key, string prm_iv)
{
var sToEncrypt = prm_text_to_encrypt;
var rj = new RijndaelManaged()
{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试将来自Oracle的EF中的几个列组合在一起,然后执行以.Contains()下列:
public IEnumerable<User> SearchUsers(string search)
{
search = search.ToLower();
return _securityUow.Users
.Where(u => (u.FirstName.ToLower() + " " + u.LastName.ToLower() + " (" + u.NetId.ToLower() + ")").Contains(search))
.OrderBy(u => u.LastName)
.ThenBy(u => u.FirstName)
.AsEnumerable();
}
Run Code Online (Sandbox Code Playgroud)
但是,我得到了这个例外:
{
"Message": "An error has occurred.",
"ExceptionMessage": "An error occurred while executing the command definition. See the inner exception for details.",
"ExceptionType": "System.Data.Entity.Core.EntityCommandExecutionException",
"StackTrace": " at SoftwareRegistration.WebUI.Controllers.Api.V1.UserContactController.Lookup(String search) in C:\LocalRepository\OnlineSupport\SoftwareRegistration\trunk\release\SoftwareRegistration\SoftwareRegistration.WebUI\Controllers\Api\V1\UserContactController.cs:line 40\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)\r\n …Run Code Online (Sandbox Code Playgroud) 我对Global.asax做了一些修改,以便我可以显示自定义错误页面(403,404和500)这是代码:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
//FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
protected void Application_Error(object sender, EventArgs e)
{
if (Context.IsCustomErrorEnabled)
{
ShowCustomErrorPage(Server.GetLastError());
}
}
private void ShowCustomErrorPage(Exception exception)
{
HttpException httpException = exception as HttpException;
if (httpException == null)
{
httpException = new HttpException(500, "Internal Server Error", exception);
}
Response.Clear();
RouteData routeData = new RouteData();
routeData.Values.Add("controller", "Error");
routeData.Values.Add("fromAppErrorEvent", true);
switch (httpException.GetHttpCode())
{
case 403:
routeData.Values.Add("action", "AccessDenied");
break;
case 404:
routeData.Values.Add("action", "NotFound");
break;
case 500: …Run Code Online (Sandbox Code Playgroud) 我正在使用mp4parser附加两个音频文件.追加已完成,但速度很慢,不知道是什么问题.
在这一行调试器卡住大音频文件,例如大约30分钟的音频文件.
这是代码.
Movie[] inMovies = null;
inMovies = new Movie[]{
MovieCreator.build(fileOne),
MovieCreator.build(fileTwo)};
List<Track> audioTracks = new LinkedList<Track>();
for (Movie m : inMovies) {
for (Track t : m.getTracks()) {
if (t.getHandler().equals("soun")) {
audioTracks.add(t);
}
}
}
Movie result = new Movie();
if (audioTracks.size() > 0) {
result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()])));
}
Container out = new DefaultMp4Builder().build(result);
String fileName = getFilename();
FileChannel fc = new RandomAccessFile(String.format(fileName), "rw").getChannel();
out.writeContainer(fc);
fc.close();
Run Code Online (Sandbox Code Playgroud)
manifest资源配置文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ehrlite"
android:versionCode="1"
android:versionName="1.0" > …Run Code Online (Sandbox Code Playgroud) 根据 Nuxt 文档,我应该能够访问$config从我的 vuex 商店中访问:
“使用您的配置值:然后您可以通过使用或来使用页面、商店、组件和插件中的上下文,在任何地方访问这些值。” (强调,来自this.$configcontext.$confighttps://nuxtjs.org/docs/2.x/directory-struct/nuxt-config#runtimeconfig)
当我尝试$config像这样访问我的商店时:
export const state = () => (
{
// App vital details
app: {
name: 'MyApp',
appVersion: this.$config.appVersion,
copyright: helpers.getCurrentYear()
},
}
)
Run Code Online (Sandbox Code Playgroud)
我在控制台中收到一条错误消息:“无法读取未定义的属性'$config'”如果我尝试使用context.$config则会收到错误:“上下文未定义”
我知道$config否则“有效”,因为我可以在模板中使用 访问它$config.appVersion,但如何在我的商店中正确访问它?
我正在开发一个使用 Typescript 和 Leaflet 的项目。
扩展传单标记的记录(JS)方法如下:
L.Marker.Foo = L.Marker.extend({...});
Run Code Online (Sandbox Code Playgroud)
然而,Typescript 抱怨道:
Property 'Foo' does not exist on type 'typeof Marker'.
Run Code Online (Sandbox Code Playgroud)
我该如何更改它以避免编译错误?
我想将reliese/laravel( https://github.com/reliese/laravel/ ) 包安装到我的 Laravel 6+ 项目中。reliese/laravel需要"illuminate/support": "~5.1",,但我的版本现在是 6+。我已经查看了该reliese/laravel软件包,它应该仍然可以在 6+ 上使用。我怎样才能强制作曲家安装这个包?我已经尝试过了--ignore-platform-reqs,但没有成功。
Perl newb 在这里,抱歉问了一个愚蠢的问题,但是在谷歌上搜索->编码上下文很困难......有时,我会像这样访问散列:$hash{key}有时这不起作用,所以我像这样访问它$hash->{key}。这里发生了什么?为什么它有时以一种方式工作而不是另一种方式?
c# ×3
php ×2
.net ×1
android ×1
composer-php ×1
cookies ×1
dereference ×1
elmah ×1
encryption ×1
hashmap ×1
key ×1
laravel ×1
leaflet ×1
merge ×1
mp4parser ×1
nuxt.js ×1
oracle ×1
performance ×1
perl ×1
reference ×1
typescript ×1
vuex ×1