- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试了解 Maven 3 的[密码加密功能。我发现这个功能的记录很少并且令人困惑。例如,feature documentation和 a blog post by the author of the feature在几个问题上互相矛盾。
这个问题比 How does maven --encrypt-master-password work 更广泛并且不被 Maven encrypt-master-password good practice for choosing password 覆盖.
具体来说,我试图回答文档中未涵盖的以下问题。我已将迄今为止收集到的信息以斜体显示在每个问题下方。
settings-security.xml
中的存在即可提供安全性吗?在只有一个用户可以访问的文件夹中( ~/.m2
)?如果是这样,为什么要费心加密“主密码”(为什么不只使用一些随机值)?难道“主密码”真的只是密码函数的熵输入吗?称其为密码令人困惑 - 我希望 Maven 在解密任何加密的服务器密码之前提示我输入此密码,但它没有。我的理解是,是的,这仅通过存在于操作系统 protected 文件中来提供安全性。我相信 Maven 允许您加密主密码,这样如果您丢失了 settings-security.xml
文件,您可以重新生成它。这是正确的吗?
Marcelo Morales' answer on How does maven --encrypt-master-password work链接到plexus-cihper project on GitHub 。目前尚不清楚这只是密码,还是提供密码功能的实际 Maven 插件。
我不知道。
settings-security.xml
中,则使用一个加密主密码加密的常规密码仍然有效。文件,即使加密的主密码密文现在不同。有人可以解释一下这是如何工作的吗?我不知道。在我看来,Maven 正在做一些可疑的事情或在某处存储明文。
<server />
一起使用settings.xml
中的标签文件。这是真的? settings.xml
中定义的服务器在哪里会被使用吗?我的理解是<server />
定义可以在 <repositories />
中使用和<distributionManagement />
,但不是<scm />
。有人可以验证一下吗?
我不知道
抱歉,文字墙很长,感谢您的回答。
最佳答案
我的答案是基于阅读 Maven 源代码并做了一些研究。
- Does the encrypted master password provide security simply by existing in
settings-security.xml
in a folder that only one user can access (~/.m2
)? If so, why bother with encrypting a 'master password' (why not just use some random value)? Isn't the 'master password' really just an entropy input to the cryptographic function? Calling it a password is confusing - I expected Maven to prompt me for this password before de-crypting any encrypted server passwords, but it did not.
主密码是加密函数的输入,用于加密/解密服务器密码。如果某人拥有您的个人加密服务器密码,他们将无法解密它们,除非他们也拥有您的主密码。这意味着您可以与其他人自由共享您的 Maven settings.xml 文件,而他们无法解密您的服务器密码。这也是主密码保存在单独文件中的原因。
这个基本原理在encryption guide中有一些解释。
- Do the master password and server passwords use the same encryption process/cipher? The server passwords are based on the master password, so there must be some difference in the algorithm. Where is the source code for this located?
据我所知,主密码是使用与服务器密码相同的密码进行加密的。解密服务器密码时,主密码(未加密形式)是输入;解密主密码时,魔术字符串“settings.security”用作附加输入。
可以查看源码PBECipher和 MavenCli.java .
- I have observed that the same master password or server password encrypted multiple times gives different hashes. According to Marcelo Morales' answer on How does maven --encrypt-master-password work, this is because 'a JVM-configuration-specific (usually SHA1PRNG) 64-bit random salt' is added to the password prior to encrypting. Maven decrypts stored passwords when they are used at compile time. Doesn't this mean the salts have to be stored somewhere?
处理盐的传统方法是随机盐与加密文本一起存储。请参阅Wikipedia article .
根据上面链接的源代码,salt 似乎存储为 Base64 解码字节的前 8 个字节,位于加密密码之前。
- I have also observed that a regular password encrypted using one encrypted master password will still work if the master password is re-encrypted and stored in the
settings-security.xml
file, even though the encrypted master password ciphertext is now different. Can someone explain how this works?
这是因为使用了主密码的解密形式,而不是加密的“密文”。因此重新加密不会影响服务器密码加解密。
我不知道您最后两个(5 和 6)问题的答案。
关于security - Maven 3 密码加密是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30769636/
我正在使用框架的对象编写一个用于加密/解密的简单库。方法如下: public static byte[] Encrypt(byte[] key, byte[] vector, byte[] input
据我所知,RIM Crypto API 似乎只提供用于对称加密 (3Des) 的 PKCS5 填充模式。我正在使用 JDE 4.6.0。 我正在尝试为黑莓应用程序提供密码学,该应用程序需要与已经使用标
我已经获得了用于加密的 Java 实现,但遗憾的是我们是一家 .net 商店,我无法将 Java 整合到我们的解决方案中。可悲的是,我也不是 Java 专家,所以我已经为此苦苦挣扎了几天,我想我终于可
我正在尝试使用 KMS 和 AWS 加密 SDK 加密数据。查看 AWS documentation 中提供的示例,似乎没有地方可以明确设置数据 key 。 我找到了 EncryptionMateri
我目前有一个用于为我的网站制作哈希的代码,该代码使用 SALT 进行哈希处理,因此密码是不可逆的...... 目前它是 100% 为我的网站工作,它是使用 ASP.NET(C#) 编码的 这是我的代码
我想要做的是在 javascript 中生成一个 key 对,并在 PHP 中使用这些加密,然后用 JS 解密。 我在附加的代码中有两个问题 它不会从装甲文本块重新加载私钥 并且它不会解密 PHP 加
在进行密码哈希时,我有以下 node.js 代码。 body.password = covid@19 salt = "hello@world" body.passwordhex = crypto.cr
我想知道的是在配置文件中加密连接字符串的明确方法。以下是我的问题: 使用机器级加密,访问我的服务器的任何人都不能编写一个小的 .Net 程序来读取连接字符串的内容吗? 如果我将我的应用程序部署到企业环
我知道 rsync 可以在文件传输期间启用/禁用 ssh 加密协议(protocol)。那么,如果 ssh 加密协议(protocol)被禁用了,是不是意味着 rsync 根本不做任何加密呢? 另外,
脚本必须搜索网页内的字符串。但该脚本不应显示它正在搜索的字符串。我的意思是搜索字符串应该采用加密格式或任何其他格式。但如果没有该搜索字符串,则不应显示网页或应在页面上显示错误。 我要开发一个插件。如果
我正在尝试加密 MySQL 上的某些字段。我正在使用 TPC-DS 的 v2.8 版本,并尝试在客户地址表的某些列上使用 AES。知道如何加密字段的所有行吗?我尝试使用 UPDATE customer
我需要一个简单的 javascript 函数,它允许我使用 key 加密 textarea 数据( key 是存储为散列 session 变量的用户密码,由 PHP 打印到字段中) 我基本上希望在用户
如何在 JavaScript 中散列/加密字符串值?我需要一种机制来隐藏 localStorage/cookie 中的一些数据吗? 这与安全问题有关,但我想为我的数据提供一些保护。 最佳答案 有很多
我有一个程序,其中数据库的密码由远程用户设置。该程序将用户名和密码保存到 xml 文件中的加密字符串中,否则应该是人类可读的。现在,这工作正常,我使用带有 key 的 C# DES 加密,它被加密和解
Kotlin 中是否有任何关于椭圆曲线加密的信息? 用于生成 key 对和加密、解密消息。 关于这个主题的信息很少甚至没有。 例如,我想实现 ECC P-521 椭圆曲线。 是否可以在 Kotlin
所以我知道 MD5 在技术上是新应用程序的禁忌,但我随机想到了这个: 自 md5($password); 不安全,不会 md5(md5($password)) 是更好的选择?我使用它的次数越多,它会变
我一直在努力使用 crypto_secretbox_easy() 在 libsodium 中加密/解密一些数据| .我似乎找不到关于使用的任何好的文档。 我想从用户那里获取密码,用它来以某种方式制作
我正在做一个加密项目 视频,我对这个程序有几个问题。 我用命令转码mp4至HLS与 ts段持续时间约为 10 秒。 首先,我需要使用数据库中的 key 加密这些视频。然而, 我不知道是否使用 ffmp
我有一个加密/复制保护问题。 我正在为使用加密狗的公司编写应用程序。请不要告诉我软件保护是没有用的,或者我应该让它自由地飞向空中,或者我花任何时间这样做都是浪费;这不是关于软件保护有效性的哲学问题,更
我对 有一个疑问VIM 加密 key . 我有一个文本文件,我使用加密该文件 :X 现在,加密 key 的存储位置(路径)。 无论是存储在单独的文件中还是存储在文本文件本身中。 如果我打开文件,它会询
我是一名优秀的程序员,十分优秀!