สำหรับรูปแบบลายเซ็น ฟังก์ชัน $พี$ ต้องเป็นการคาดเดา เช่น สำหรับทุกองค์ประกอบของพื้นที่เอาต์พุตจะมีอินพุตอย่างน้อยหนึ่งรายการที่สร้างเอาต์พุตนั้น ทั้งนี้เพื่อให้ผู้ลงนามสามารถลงนามข้อมูลที่สอดคล้องกับค่าเอาต์พุตใดๆ เช่น สำหรับค่าเป้าหมายที่กำหนด $h$, ผู้ลงนามสามารถค้นหา $x$ ดังนั้น$P(x)=h$. หากฟังก์ชันไม่ใช่การคาดเดา จะมีบางค่าที่ผู้ลงนามไม่สามารถสร้างลายเซ็นที่ถูกต้องได้ เช่น $h$ ซึ่งไม่มี $x$ มีอยู่ อาร์กิวเมนต์การนับอย่างง่ายแสดงให้เห็นว่าด้วยเหตุผลนี้ $n\ge ม$ สำหรับรูปแบบลายเซ็น
สำหรับรูปแบบการเข้ารหัส ฟังก์ชัน $พี$ จำเป็นต้องเป็นแบบอินเจกทีฟ เช่น สำหรับทุกๆ เอาต์พุตที่เป็นไปได้ จะมีอินพุตสูงสุดหนึ่งตัวที่สร้างมันขึ้นมา เพื่อให้ตัวถอดรหัสลับสามารถกู้คืนข้อความได้อย่างชัดเจน เช่น ระบุ $m$ ค้นหาเอกลักษณ์ $x$ ดังนั้น $f(x)=m$. หากฟังก์ชันไม่ใช่การแทรก จะสามารถสร้างข้อความที่การถอดรหัสไม่สามารถถอดรหัสเฉพาะได้ เช่น มีบางข้อความอยู่ $m$ ซึ่ง $f(x_1)=f(x_2)=m$ และตัวถอดรหัสไม่มีทางบอกได้ว่าข้อความที่ต้องการนั้นคืออะไร $x_1$ หรือ $x_2$. อาร์กิวเมนต์การนับอย่างง่ายอีกครั้งแสดงให้เห็นว่า $m\ge n$ สำหรับรูปแบบการเข้ารหัสคีย์สาธารณะ
เราก็เห็นว่าน่าใช้ $พี$ ทั้งการเซ็นชื่อและการเข้ารหัส $พี$ ต้องเป็น bijective (มีอยู่ $พี$ กับ $m=n$ ซึ่งไม่ใช่แบบ bijective และเหมาะสำหรับทั้งการเซ็นชื่อและการเข้ารหัส) แม้ว่าจะมีแผนที่หลายตัวแปรแบบ bijective อยู่ แต่ก็ยากที่จะหาแผนที่ที่เราสามารถซ่อนแผนที่ผกผันได้อย่างมีประสิทธิภาพและปลอดภัย ด้วยเหตุนี้ ฟังก์ชันการเซ็นชื่อและการเข้ารหัสจึงมักแยกจากกัน