我有一个 Django 应用程序,它重置在 Ubuntu 机器上运行的 unix 用户密码,但我的开发环境是 OS X,我遇到了这种烦人的情况:
操作系统:
>>> import crypt
>>> crypt.crypt('test','$1$VFvON1xK$')
'$1SoNol0Ye6Xk'
Linux:
>>> import crypt
>>> crypt.crypt('test','$1$VFvON1xK$')
'$1$VFvON1xK$SboCDZGBieKF1ns2GBfY50'
通过阅读 pydoc crypt
,我看到它使用了特定于操作系统的crypt
实现,因此我还在两个系统中测试了以下代码,结果与 Python 相同:
#include <unistd.h>
int main() {
char *des = crypt("test","$1$VFvON1xK$ls4Zz4XTEuVI.1PnYm28.1");
puts(des);
}
如何让 OS X 的crypt()
实现产生与 Linux 相同的结果crypt()
?
为什么 Python 实现没有涵盖这一点(正如我对跨平台部署的这种情况所期望的那样)?