테스트 사이트 - 개발 중인 베타 버전입니다

패스워드를 일반문자로 입력하면 그누보드 암호화 로직으로 변환되어 출력되게 채택완료

동물원 2년 전 조회 2,577

패스워드를 일반문자로 입력하면 그누보드 암호화 로직으로 변환된 값으로 출력되게 하는 방법이 있을까요?

 

관리자페이지에서 비번 변경을 하면 암호화된 값으로 변환되어 저장되기는 하는데, 여러개 (한번에 50~100개 정도)의 비번을 변경해야 하는 경우가 있어서요. 

php 파일내 소스로 만들어서 패스워드에 일반문자로 넣으면 create_hash password 값으로 변환되서 출력하는 방법이 있으면 좋겠습니다.

 

pbkdf2.compat.php 파일도 살펴보고, 여러가지 방법으로 시도해봤는데, 잘 안되서요.

 

문자패스워드 => 암호화패스워드 를 출력해서 볼수 있는 PHP 파일변환기(?) 만들어 사용할 수 있을지,

가능하다면 함수를 어떻게 적용해야 할지 도움 부탁 드립니다.

 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

다음과 같은 방법으로 해 볼 수 있을 것 같습니다.

 

루프를 사용하여 처리한후, 배열에 여러 비밀번호를 저장하고, 각 비밀번호를 암호화하여 새로운 배열에 저장하면 될 것 같습니다

 

</p>

<p>$plainPasswords = ['비밀번호1', '비밀번호2', '비밀번호3']; // 원하는 비밀번호 목록

$hashedPasswords = [];</p>

<p>foreach ($plainPasswords as $plainPassword) {

    $hashedPassword = password_hash($plainPassword, PASSWORD_DEFAULT);

    $hashedPasswords[] = $hashedPassword;

}</p>

<p>// 암호화된 비밀번호 목록 출력

print_r($hashedPasswords);

 

파일 변환기를 만들 수는 있지만, 보안관련 부분을 고려해서 제작하시면 가능 할 것 같습니다.

참고 하셔서 원하시는 형식으로 구현해 볼 수 있을 것 같습니다.

</p>

<p><?php</p>

<p>function convertPasswordsToFile($inputFile, $outputFile) {

    // 오픈할 파일과 저장할 파일을 열기

    $inputHandle = fopen($inputFile, 'r');

    $outputHandle = fopen($outputFile, 'w');</p>

<p>    if ($inputHandle === false || $outputHandle === false) {

        die("파일을 열 수 없습니다.");

    }</p>

<p>    while (!feof($inputHandle)) {

        $plainPassword = trim(fgets($inputHandle));

        if (!empty($plainPassword)) {

            $hashedPassword = password_hash($plainPassword, PASSWORD_DEFAULT);

            fwrite($outputHandle, "입력 패스워드: $plainPassword, 암호화 패스워드: $hashedPassword\n");

        }

    }</p>

<p>    // 파일 핸들 닫기

    fclose($inputHandle);

    fclose($outputHandle);</p>

<p>    echo "변환 완료";

}</p>

<p>$inputFile = 'input_passwords.txt';  // 입력 파일 이름

$outputFile = 'output_passwords.txt';  // 출력 파일 이름</p>

<p>convertPasswordsToFile($inputFile, $outputFile);

?>

convertPasswordsToFile라는 함수를 정의하고, 이 함수를 사용하여 입력 파일로부터 문자 패스워드를 읽어 암호화하고 결과를 출력 파일에 저장하게 되며, 입력 파일과 출력 파일 이름을 변수로 설정하고, 함수 호출로 변환을 하면 될 것 같습니다.

 

1. input_passwords.txt와 같이 입력 파일을 만들고 그 안에 한 줄에 하나씩 암호화하려는 문자 패스워드를 입력 2. PHP 파일 변환기 코드를 작성한 후 PHP 파일로 저장 3. 웹 서버나 명령줄을 통해 PHP 파일을 실행하여 변환작업 4. 결과는 output_passwords.txt와 같은 출력 파일에 저장

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

동물원
2년 전
상세한 설명과 예시 정말 감사 드립니다. 많은 도움이 되었습니다. 한번 실행해 보겠습니다. 감사합니다.
동물원
2년 전
우선, 상세한 답변에 다시한번 감사 드립니다.
알려주신 방법으로 시도해 봤더니 비번이 생성되기는 하는데, G5 암호형식이 아닌 것 같네요.
변환할때 G5의 암호로 변환되게 하려면 어떻게 적용하면 될까요?
웹메이킹
2년 전
그누보드에서 사용하는 비밀번호 암호화 형식은 Bcrypt인 것으로 알고 있습니다. 따라서, password_hash 함수를 사용하여 암호를 Bcrypt 형식으로 암호화해야 할 것으로 생각합니다.

다음과 같이 해보시는건 어떨까 합니다.
[code]
<?php
function convertPasswordsToFile($inputFile, $outputFile) {
// 오픈할 파일과 저장할 파일을 열기
$inputHandle = fopen($inputFile, 'r');
$outputHandle = fopen($outputFile, 'w');
if ($inputHandle === false || $outputHandle === false) {
die("파일을 열 수 없습니다.");
}
while (!feof($inputHandle)) {
$plainPassword = trim(fgets($inputHandle));
if (!empty($plainPassword)) {
// Bcrypt 암호화 알고리즘과 비용(cost) 설정
$options = [
'cost' => 12, // 비용을 조정할 수 있으며, 기본값은 10입니다.
];
$hashedPassword = password_hash($plainPassword, PASSWORD_BCRYPT, $options);
fwrite($outputHandle, "입력 패스워드: $plainPassword, 암호화 패스워드: $hashedPassword\n");
}
}
// 파일 핸들 닫기
fclose($inputHandle);
fclose($outputHandle);
echo "변환 완료";
}
$inputFile = 'input_passwords.txt'; // 입력 파일 이름
$outputFile = 'output_passwords.txt'; // 출력 파일 이름
convertPasswordsToFile($inputFile, $outputFile);
?>
[/code]

password_hash 함수를 사용할 때 PASSWORD_BCRYPT 알고리즘을 명시하고, 비용 매개변수를 설정하여 Bcrypt로 암호화하도록 하면 될 것 같습니다.
또한 비용을 조절하면 암호화 강도가 변경되며, 기본값은 10입니다. 일반적으로 10 이상의 값으로 설정하는 것이 좋을 것으로 생각합니다.

댓글을 작성하려면 로그인이 필요합니다.

2년 전

</p>

<p>$a = 'abcd';</p>

<p>$b = sql_password($a);</p>

<p>echo $b;</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

j
jihan?
2년 전
sql_password() 함수는 이제 절대로 사용하지 마세요.
복호화에 취약한 해시입니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인