הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   [PHP]מנסה לבנות הצפנה, ולמצוא מקומות רנדומלים בטקסט. עזרה בקשה. (https://hosts.co.il/forums/showthread.php?t=40714)

BlueNosE 28-02-07 22:13

[PHP]מנסה לבנות הצפנה, ולמצוא מקומות רנדומלים בטקסט. עזרה בקשה.
 
PHP קוד:

$Code "bla bla bla yada yada yada";

$Len = array();
function 
ChoosePositions($l)
{
global 
$Len;

    if (
$l 2)
    {
    
$Last $l;
    
$c rand (1$l 1);
    
$Len[] = $c;
        if (
$c ceil ($l 2))
        
ChoosePositions(ceil ($l 2));
    }
}
    if (
strlen ($Code) > 2)
    
ChoosePositions(strlen ($Code));

asort($Len);

$pos 0;
$NewCode "";
    foreach (
$Len as $val)
    {
    
$a substr ($Code$pos$val);
    
$pos $val;
    
$NewCode .= $a;
    }

$a substr ($Code$pos);
$NewCode .= $a;

echo 
$NewCode

בקוד אני מנסה לבחור בכמה פוזיציות אקראיות בטקסט, ולקחת כל חתיכת טקסט בנפרד.

מה לא הולך לי פה?
http://hill.4save.net/HH.php

אם ברענון ראשון זה פועל אז תרעננו כמה פעמים.

זה אמור לכתוב Hash Code Longer Then Before
וזה לא בדיוק עושה את זה.

תודה לעוזרים!

RS324 28-02-07 22:20

לא בדקתי את הפונקציה אבל מתוך הגיון תסתכל פה :

PHP קוד:

$pos 0;
$NewCode "";
    foreach (
$Len as $val)
    {
    
$a substr ($Code$pos$val);
    
$pos $val;
    
$NewCode .= $a;
    }

$a substr ($Code$pos);
$NewCode .= $a;

echo 
$NewCode

LEN = מערך ריק... ASORT - רק הופך את הסדר שלו כלומר לא הפכת כלום כי הוא גם ככה 0
POS = 0 כלומר
A = ""
כי אתה אומר לו תקח מ CODE את תו 0 - יכול להיות זה שווה ל B לא עקרוני עכשיו

כלומר בסופו של דבר המחזרות NEWCODE שווה ל B
ולא משנה כמה פעמים תריץ את זה....

BlueNosE 01-03-07 08:10

ציטוט:

נכתב במקור על ידי RS324 (פרסם 430578)
לא בדקתי את הפונקציה אבל מתוך הגיון תסתכל פה :

PHP קוד:

$pos 0;
$NewCode "";
    foreach (
$Len as $val)
    {
    
$a substr ($Code$pos$val);
    
$pos $val;
    
$NewCode .= $a;
    }

$a substr ($Code$pos);
$NewCode .= $a;

echo 
$NewCode

LEN = מערך ריק... ASORT - רק הופך את הסדר שלו כלומר לא הפכת כלום כי הוא גם ככה 0
POS = 0 כלומר
A = ""
כי אתה אומר לו תקח מ CODE את תו 0 - יכול להיות זה שווה ל B לא עקרוני עכשיו

כלומר בסופו של דבר המחזרות NEWCODE שווה ל B
ולא משנה כמה פעמים תריץ את זה....

אני לא בטוח שהבנת.
קודם כל בקשר למערך הריק
PHP קוד:

    $Len[] = $c

יש הגדרה בפונקצייה ChoosePositions של המערך, כל פעם מכניס לו עוד איבר,
וזה דווקא פועל (עשיתי PRINT R).

עכשיו בקשר לפוזישן - הרי איך פועל SUBSTR, אני צריך לבחור קטע מסויים ולהתחיל איפשהו, אז ה0 זה בשביל להתחיל מתו 0...

למרות שנראה לי שהבנתי מה הטעות שלי.. אני אבדוק..

RS324 01-03-07 13:37

אוקי
בדקתי את הפונקציה יותר לעומק....
אני חושב שהבעיה טמונה ב RAND כי אתה כל הזמן לוקח ערך אחר...
אז זה משנה לך את ה STRING

תסתכל : כתבתי את זה :

PHP קוד:

$Code "this is my secret password"

this is my secret ppassword
this is my secret password
this isis my secretecret passwordd
this is my secrsecret passwordd

אין עקביות בהצפנה כביכול...

BlueNosE 01-03-07 14:47

פתרתי את זה, כמו שחשבתי הבעיה הייתה בהגדרת הSUBSTR, כי אני תמיד שוכח שהוא מקבל נקודה x וכמות תווים (ולא נקודה x ונקודה y).
פתרתי את זה ככה:
קוד:

substr ($Code, $pos, $val - $pos)
תודה על הניסיון, רותם.
אפשר לנעול.


כל הזמנים הם GMT +2. הזמן כעת הוא 01:29.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ