在散列它们并将它们存储在我的数据库中之前,我应该如何逃避或清除用户提供的密码?
当PHP开发人员考虑出于安全目的而考虑哈希用户的密码时,他们往往会像对待任何其他用户提供的数据一样考虑这些密码.这个主题经常出现在与密码存储相关的PHP问题中; 开发人员经常希望使用诸如escape_string()(在各种迭代中)等功能清理密码htmlspecialchars(),addslashes()然后再对其进行散列并将其存储在数据库中.
RFC2617表示将用户名和密码编码为base64,但没有说明在创建用于输入base64算法的八位字节时要使用的字符编码.
我应该假设US-ASCII或UTF8吗?或者有人已经在某处解决了这个问题?
SharedPreferences存储在Android应用中的常见位置是:
/data/data/<package name>/shared_prefs/<filename.xml>
Run Code Online (Sandbox Code Playgroud)
具有root权限的用户可以导航到此位置并可以更改其值.保护它的需要非常重要.
我们可以通过多少种方式加密整个shared_pref's xml文件?
我们都知道我们可以加密并保存shared_pref's xml文件中的数据,但这不仅100%安全,因此需要用密钥加密整个文件.需要帮助了解加密整个xml文件的各种方法.这是一般性问题,这里讨论的各种加密方法可以帮助所有开发人员保护应用程序.
更新 原始问题不再是这个问题的适当问题,所以我将单独留下来展示我尝试/学习的内容和背景.很明显,这不仅仅是一个"Base64变种",而且涉及的更多一些.
背景: 我在python 3.x中编程主要用于开源程序Blender.我是新手/业余级程序员,但我很了解大概念我已经阅读了与我的问题相关的这些文章.
问题: 我有一个二进制文件,其中包含对应于每个顶点(浮点数)的x,y,z坐标的3d网格数据(浮点列表和整数列表)以及构成网格面的顶点索引(整数).该文件以xml'ish的感觉组织......
<SomeFieldLabel and header like info>**thensomedatabetween**</SomeFieldLabel>
Run Code Online (Sandbox Code Playgroud)
以下是"顶点"字段中的示例
<Vertices vertex_count="42816" base64_encoded_bytes="513792" check_value="4133547451">685506bytes of b64 encoded data
</Vertices>
Run Code Online (Sandbox Code Playgroud)
我在想某处有一个额外的加密步骤.也许有翻译表,旋转密码或某种流密码?奇怪的是,字节数是正确的,但结果不应该限制可能性.有任何想法吗?以下是两个示例文件,文件扩展名更改为*.mesh.我不想公开这种文件格式,只想为Blender编写一个导入器,这样我就可以使用这些模型了.
这是两个示例文件.我从Vertices和Facets字段中提取了原始二进制文件(不是b64解码),并从公司提供的此类文件的"Viewer"中提供了边界框信息.
示例文件1
示例文件2
关于"顶点"字段的注释
关于Facets字段的注释
标头base64_encoded_bytes,它是发生base64编码时的字节数
base64_encoded_bytes/facet_count的比例似乎变化很大.从1.1到大约1.2.如果它们被编码为对应于顶点索引的3x4byte整数,我们期望比率为12.因此要么对此字段进行补充,要么使用三角形条保存模型,或者两者都保存 : - /
更多窥探
我打开了viewer.exe(在十六进制编辑器中),由公司提供查看这些文件(也是我获得边界框信息的地方).以下是我发现有趣的一些片段,可以进一步搜索.
f_LicenseClient ......我@ …
Twitter的API要求发送Authorization标头,该标头是与API密钥连接的API密钥的base64编码.在Node中,我使用:
var base64 = new Buffer(apiKey + ':' + apiSecret).toString('base64');
Run Code Online (Sandbox Code Playgroud)
发送的标头变为:
Authorization: 'Basic ' + base64
Run Code Online (Sandbox Code Playgroud)
base64编码字符串"apiKeyHere:apiSecretHere"有什么意义?为什么不接受包含原始api凭证的Authorization标头?
这个问题类似于base 64编码的目的是什么以及它在HTTP基本身份验证中使用的原因?但投票的答案并没有完全回答我的问题.Twitter的api密钥和api密钥已经是HTTP兼容的字符.他们看起来像这样(这些不是真的):
消费者密钥(API密钥)8dme3utVQfOhlPk5BUG9XbFxR
消费者秘密(API Secret)QFZXoC7MP72JZtGMBNpjLGI4Vl1xr1q9dyPLp3u7jGtkESpbLm
那么为什么base64会编码呢?此外,该帖子指出"编码的目的是将可能在用户名或密码中的非HTTP兼容字符编码为与HTTP兼容的字符." 用户名和密码不是HTTP兼容字符吗?
为什么在Authorization标头中使用Base64编码生成的"username:password"字符串文字?它的背景是什么?
我想知道在使用HTTP Basic Auth时编码String的目的是什么:base 64中的"login:password".
我可能遗漏了一些东西,因为在我看来,这种编码只是增加了一个不必要的复杂层.
谢谢