Py est un algorithme de chiffrement par flot développé par Eli Biham et Jennifer Seberry.
Il peut gérer des clés d'une longueur pouvant aller jusqu'à 256 bits. Destiné à être une alternative plus sûre et plus performante que RC4, Py a été publié en 2005 à l'occasion du concours ECrypt. L'algorithme est basé sur une structure de données nommée rolling arrays, un terme qui symbolise en fait un tableau circulaire optimisé accompagné d'une opération (addition ou permutation). La clé permet de mettre en place la structure interne composée de deux tableaux, le chiffrement est ainsi conditionné par cet état interne de 10400 bits.
Un vecteur d'initialisation de 128 octets permet de changer la séquence chiffrée si la clé est identique et que les données sont les mêmes. Une itération de l'algorithme génère 8 octets avec lesquels sont effectués un XOR des 8 octets provenant des données à chiffrer. Py peut traiter des messages d'une longueur maximal de 264 bits, un nombre suffisant pour la quasi-totalité des applications. La gestion de messages plus longs aurait nécessité une cryptanalyse supplémentaire pour s'assurer de l'uniformité statistique des sorties.
Py est théoriquement considéré comme cassé, en effet il existe un moyen de distinguer sa sortie d'un flot aléatoire. Mais les spécifications de Py précisent que sa sécurité n'est garantie que si moins de 264 messages sont considérés dans la structure, or ces attaques ont une complexité plus grande.
Py doit être en fait écrit en lettres cyrilliques : РУ, ce qui se lit : « Rou ». C'est la terminaison du mot anglais kangaroo (« kangourou »), Eli Biham ayant pour tradition de nommer ses algorithmes selon des animaux. L'algorithme ayant été conçu avec l'Australienne Jennifer Seberry, Biham pensa directement au kangourou.